Kod: Zaznacz cały
void merge(int* tab, int begin, int middle, int end)
{
int i, s = middle, p = begin;
int* tmp = new int[end];
for(i = begin; i < end; ++i)
tmp[i] = tab[i];
i = begin;
while(i < middle && s < end)
{
if(tmp[i] < tmp[s])
tab[p++] = tmp[i++];
else tab[p++] = tmp[s++];
}
while(i < middle)
tab[p++] = tmp[i++];
}
void mergesort(int* tab, int begin, int end){
if (begin < (end - 1))
{
int middle = (begin + end) / 2;
mergesort(tab, begin, middle);
mergesort(tab, middle, end);
merge(tab, begin, middle, end);
}