[C++] Mergesort jak działa ten kod?

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
mazix2
Sędziwy Jeż
Sędziwy Jeż
Posty: 75
Rejestracja: 11 gru 2009, 10:01
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

[C++] Mergesort jak działa ten kod?

Post autor: mazix2 »

Hej, mam takie pytanie - o dzialanie ponizszego kodu. Wiem, mniej wiecej, jak dziala mergesort, dzieli zboir na 2, potem kazdy z osobna sortuje i posortowane laczy ... Tylko ja jakos nie widze tego w tym kodzie (nie ja go pisalem, znalazlem w necie) moglby ktos dokladnie wytlumaczyc jak to dziala ?

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);
    }
}
LiTE
Sędziwy Jeż
Sędziwy Jeż
Posty: 66
Rejestracja: 17 paź 2007, 01:51
Płeć: Mężczyzna
Wersja Ubuntu: 7.10
Środowisko graficzne: GNOME
Kontakt:

Odp: [C++] Mergesort jak działa ten kod?

Post autor: LiTE »

http://pl.wikipedia.org/wiki/Sortowanie_przez_scalanie

Czytaj, jak nie rozumiesz czytaj jeszcze raz. Jak nie rozumiesz ponownie, to przeczytaj ponownie.
Zrób sobie przykład dla małej tablicy i posortuj, pooglądaj animacje dostępne w internecie.
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: [C++] Mergesort jak działa ten kod?

Post autor: beluosus »

Polecam tę stronę http://www.sorting-algorithms.com/
Świetnie prezentacja popularnych algorytmów sortowania w działaniu dla różnego rodzaju danych wejściowych.
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości