ALG7

ALG7



4.3. Duicksort, algorytm klasy Q(N log2N) 87

4.3. Quicksort, algorytm klasy 0(Nlog2N)

Jest to słynny algorytm 1, zwany również po polsku sortowaniem szybkim. Należy on do tych rozwiązań, w których poprzez odpowiednią dekompozycję osiągnięty został znaczny zysk szybkości sortowania. Procedura sortowania dzieli się na dwie zasadnicze części: część służącą do właściwego sortowania, która nie robi w zasadzie nic robi... oprócz wywoływania samej siebie, oraz procedury rozdzielania elementów tablicy względem wartości pewnej komórki tablicy służącej za oś (ang. pivot) podziału. Proces sortowania jest dokonywany pracz tę właśnie procedurę, natomiast rekurencja zapewnia „sklejenie” wyników cząstkowych i w konsekwencji posortowanie całej tablicy.

Jak dokładnie działa procedura podziału? Otóż w pierwszym momencie odczytuje się wartość elementu osiowego P, którym zazwyczaj jest po prostu pierwszy element analizowanego fragmentu tablicy. Tenże fragment tablicy jest następnie dzielony wg klucza symbolicznie przedstawionego na rysunku 4-5.

Kolejnym etapem jest zaaplikowanie procedury Quieksort na „lewym” i „prawym” fragmencie tablicy, czego efektem będzie jej posortowanie. To wszystko!

Rys. 4 - 5.

Podział tablicy w metodzie Quicksort.


element <


•P'


element osiowy


P'


element > = 'P'


Na rysunku 4 - 6 są przedstawione symbolicznie dwa główne etapy sortowania metodąOuicksort (P oznacza tradycyjnie komórkę tablicy służącą za „oś”).

QuickSort

•P'

OuickSort

r~ i

Qu\ckSon

V~ ~1

< p'

p‘

>= P'


Rys. 4 - 6.

Zusuda działania procedury Quicksort.

' PatrzC.A.K. Hoare-,.Quicksorf' w Computer Journal, 5, 1(1962).

2 Elementy tablicy są fizycznie przemieszczane, jeśli zachodzi potrzeba.


Wyszukiwarka

Podobne podstrony:
ALG7 1.5. Poprawność algorytmów 27 {warunki wstępne 1} poszukiwany-program {warunki końcowe} Możliw
Pojęcie obiektu i klasy (3) Klasa - jest to wzorzec dla obiektów, szablon z którego tworzone są nowe
420 M. Orzechowski narodu, grupy narodowej podzielonej na antagonistyczne grupy i klasy społeczne je
ALG7 3.5. Przykład 4: Różne typy złożoności obliczeniowej 67 Koszt algorytmu oznaczmy klasycznie pr
ALG4 84Rozdział 4. Algorytmy sortowania insert.cpp void InsertSort (int *tab) foriint i=l; i<n;i
39055 zdj7 (7) M*Poprawienie algorytmu prostego wstawiania Ciąg wynikowy a, ... a,
ALG7 Rozdział 1Zanim wystartujemy Zanim na dobre rozpoczniemy operowanie takimi pojęciami jak wspom
ALG7 2.4. Niebezpieczeństwa rekurencji 37 return (x-10); else return MacCarthy(MacCarthy(x111}); 1
ALG7 2.9. Zadania 472.9.Zadania Wybór reprezentatywnego dla rekurencji zestawu zadań wcale nie był
ALG7 3.1. Dobre samopoczucie użytkownika programu 57 mów zostaną wprowadzone na reprezentatywnych p
ALG7 3.8. Zadania 77b)    T(n2) e 0(«3); c)    7’(2"+l) e 0(2&qu
ALG2 82Rozdział 4, Algorytmy sortowania Potrzeba sortowania danych jest związana z typowo ludzką ch
ALG 7 5.1. Listy jednokierunkowe 97 public: int pusta()    // czy lista jest pusta? {
ALG7 5.1. Listy jednokierunkowe 107 cout « "L2 = for (i=0; i<n; 12.dorzuc2(tab2[i++])) ; 12
ALG7 5.1. Listy jednokierunkowe 117 Mając już komplet funkcji pusta, zestaw funkcji decyzyjnych i u

więcej podobnych podstron