Wzywam ekspertów od C++!
Tommy: Wzywam ekspertów od C++!
Witam,
Obecnie na lekcjach przerabiamy funkcję rekurencyjną MergeSort. Przy czym podawana jest nam
taka jego wersja.
void MergeSort(int d[], int pocz, int kon)
{
int sr; (1)
sr = (pocz+kon)/2;
if (pocz<sr) (2)
MergeSort(d,pocz,sr);
if (sr+1<kon)
MergeSort(d,sr+1,kon); (!)
Merge(d,pocz,kon);
}
I wszysto przed (!) nie rozumiem. Wiem że polega to na takim czymś:
(1). Mamy np. zbiór 8−elementowy i dzielimy go na dwa 4−elementowe
(2).Potem te dwa podzbiory dzielimy też na dwa i robimy tak aż dostaniemy 8 podzbiorów
jednoelementowych.
Funkcja Merge z tego co wyczytałem ma w tym momencie posortować dwa już posortowane podzbiory
4−elementowe. Ale czemu one są posortowane? Rekurencja MergeSort przecież podzieliła je na nie
związane ze sobą jednoelementowe podciągi. Co je połączyło spowrotem w dwa 4−elementowe,
posortowane zbiory?
16 paź 18:02