1800320376

1800320376



liczba elementów tablicy wejściowej jest przechowywana poza nią. Tak więc algorytmy, które nie działają w miejscu wymagają dodatkowej pamięci.

Heap Sort cechuje się również tym, iż jest niestety algorytmem niestabilnym. Oznacza to, iż posiadając 2 lub więcej identycznych wartości, nie sortuje ich w kolejności wejściowej.

2. Ciało algorytmu

Po utworzeniu struktury kopca następuje właściwe sortowanie. Polega ono na usunięciu wierzchołka kopca, zwierającego element maksymalny dla typu max (minimalny dla typu min), a następnie wstawieniu w jego miejsce elementu z końca kopca i odtworzenie porządku kopcowego (Max-Heapify). W zwolnione w ten sposób miejsce, zaraz za końcem zmniejszonego kopca wstawia się usunięty element maksymalny. Operacje te powtarza się aż do wyczerpania elementów w kopcu. Wygląd tablicy można tu schematycznie przedstawić następująco:

0 12...


k | k+1 k+2


n


| Kopiec elementów do posortowania | Posortowana tablica |

Tym razem kopiec kurczy się, a tablica przyrasta (od elementu ostatniego do pierwszego). Także, tu złożoność usuwania elementu połączonego z odtwarzaniem porządku kopcowego, ma złożoność logarytmiczną, a zatem złożoność tej fazy to 0(n ■ log w).

Algorytm można również opisać w „pseudo kodzie” w celu implementacji w różnych językach programowania, oto on:

Heapsort(A)

1    Build-Max-Heap(A)

2    for i <-lenght[A] downto 2

3    do zamień A[l] <->A[/]

4    heap-size[A\ <- heap-size[A] - 1

5    Max-Heapify(A, 1)

Build-Max-Heap(A)

1    heap-size[A\ <- lenght[A]

2    for i <- lenght[A] div 2 downto

3    do Max-Heapify(A, /)


Max-Heapify(A, i)

1    / <- Left(i)

2    r <- Right(/)

3    if / < heap-size[A] i A[/] > A[/]

4    then largest    <-l

5    else largest <— i

6    if /• < heap-size[A] i A[r] > A[largest]

7    then largest    <-r

8    if largest * i

9    then zamień    A[/] <-> A[largest]

10    Max-Heapify(A, largest)

3



Wyszukiwarka

Podobne podstrony:
Image364 4.6.3.2. Dekodery wielopoziomowe Jeśli liczba bitów kodu wejściowego jest większa od liczby
RadixSort // elem - liczka możliwych wartości składowych elementu tablicy wejściowej (obiektu) // el
IMGw12 jest zaspokojeniem określonej osobistej potrzeby czy dążenia, które nie jest postrzegane jako
1 GR 1. 1 prawo Netwona (I) Ciało, na które nie działa żadna siła (lub gdy siła wypadkowa jest równa
Untitled16 186 II. Klasyczna myśl ekonomia, Malthus i Marks prognozy jest mniejsze od jedności. Tak
Nie do końca jest jasny stosunek między tak nazwanymi zasadami: •    Najczęściej nie
CCF20090605060 Pouczające jest prześledzenie starań Kartezjusza o wytropienie siedziby „ja”, które
DSC00643 Obok pierwiastków, których rola jest znana, występują jednak w roślinach i takie pierwiastk
ukształtowane pokrycie. Jest ono zrobione ze specjalnego miękkiego tworzywa, które nie przepusz
scan 8 (4) 2.2. DYWERGENCJA I ROTACJA POLA ELEKTROSTATYCZNEGO zeru, ponieważ E jest prostopadłe do d
23 (785) kasia: A ile chcesz mieć, żeby zacząć żyć? Bo on jest uczciwszy. On żyje tak, jak chce, a t
CIMG3368 (2) tę przestrzeń zamyka, ale równocześnie nie jest ślepą ścianą, lecz ażurem, a więc 
macierz kwadratowa, mająca jedynki na przekątnej głównej i zera poza nią, jest to element neutralny
* w karcie obiegu dokumentu wszystkie elementy pracy poza manipulacją, oraz jest przechowywanie a ni

więcej podobnych podstron