Hej, mam taką funkcję do sortowania przez scalanie, ale z jakiegoś powodu nie działa. Czy ktoś pomógłby mi wychwycić błąd? Byłbym wdzięczny :)
double* pomoc;
void sortuj_przez_scalanie(double* tablica, int lewy_indeks, int prawy_indeks)
{
// tu nalezy zaimplementowac sortowanie tablicy przez scalanie (ang. merge sort)
if (lewy_indeks >= prawy_indeks) return;
int srodek = (lewy_indeks + prawy_indeks) / 2;
sortuj_przez_scalanie(tablica, lewy_indeks, srodek);
sortuj_przez_scalanie(tablica, srodek++, prawy_indeks);
int i = lewy_indeks;
int j = srodek++;
for (int k = lewy_indeks; k <= prawy_indeks; k++) {
pomoc[k] = tablica[k];
}
for (int k = lewy_indeks; k <= prawy_indeks; k++) {
if (i <= srodek) {
if (j <= prawy_indeks) {
if (pomoc[j] < pomoc[i]) {
tablica[k] = pomoc[j++];
}
else {
tablica[k] = pomoc[i++];
}
}
else {
tablica[k] = pomoc[i++];
}
}
else {
tablica[k] = pomoc[j++];
}
}
delete[] pomoc;
}