Witam. Mam małe pytanie dotyczące algorytmu sortującego i scalającego. Wszystko się kompiluje jednak w wyniku wywala mi jakieś śmiecie. Dodam, że algorytm ma być zrobiony bez wykorzystania wskaźników. Będe mega wdzięczny za pomoc, mam wrażenie, że gdzieś zrobiłem mały błąd którego ni kija nie moge zlokalizować, kompilując wywala jakieś dziwne dane.
Pozdrawiam i bardzo dziękuje za pomoc ;)
#include <iostream>
using namespace std;
void merge_sort(int tablica[], int poczatek, int koniec);
void Scalaj (int tab[], int poczatek, int srodek, int koniec);
int main()
{
int tab[] = {1,3,15,7,23,20,9,7,13,8};
int p = 0;
int k = 9;
merge_sort(tab,p,k);
for(int i=0;i<10;i++)
cout<<tab[i]<<" ";
return 0;
}
void merge_sort(int tablica[], int poczatek, int koniec)
{
int srodek;
if (poczatek < koniec){
srodek = (poczatek + koniec) / 2;
merge_sort(tablica, poczatek, srodek);
merge_sort(tablica, srodek + 1, koniec);
Scalaj(tablica, poczatek, srodek, koniec); }
}
void Scalaj (int tab[], int poczatek, int srodek, int koniec)
{
int i = poczatek;
int j = srodek + 1;
int temp[10]; //tablica pomocnicza
int q = poczatek; // indeks aktualnej pozycji w tablicy pomocniczej
while (i <= srodek && j <= koniec)
{
if (tab[i] <= tab[j])
{
temp[q] = tab[i];
i++;
q++;
}
else //tab[j] < tab[i]
{
temp[q] = tab[j];
q++;
j++;
}
}
//jesli ktorys z ciagow jest juz pusty
while (i <= srodek )
{
temp[q] = tab[i];
q++;
i++;
}
while (j <= koniec )
{
temp[q] = tab[j];
q++;
j++;
}
// skopiowanie elementow z tablicy pomocniczej do wlasciwej tablicy
for (int s = 0; s <10; s++)
tab[s] = temp[s];
}