Mam wątpliwość, czy aby na pewno ten kod jest poprawny:
void MergeSort(int p, int q)
{
if (p==q)
return;
int s = (p + q) / 2;
MergeSort(p, s);
MergeSort(s+1, q);
int i = p;
int j = s+1;
for (int k = p; k <= q; k++)
if (j>q || ( i<=s && A[i] < A[j] ) )
{
B[k] = A[i];
i++;
} else
{
B[k] = A[j];
j++;
}
for(int k = p ; k <= q; k++)
A[k] = B[k];
}
Nie jest on mojego autorstwa, ale natrafiłem na niego na platformie e-learning'owej i albo nie mogę pojąc w jaki sposób działa MergeSort, albo coś jest nie tak z kodem.
Już wszystko ok, zaplątałem się w rekurencji :)