Strukture podataka i algoritmi
Poredjenje Quick i Heap Sort-a

Empirijske studije pokazuju da je u opstem slucaju Quick Sort znacajno brzi od Heap Sort-a.

U sledecoj tabeli su dati brojevi operacija poredjenja i zamene mesta kod tri razlicita algoritma za sortiranje na istom skupu podataka:

n Quick Sort Heap Sort Sortiranje umetanjem
PoredjenjaZamena mesta PoredjenjaZamena mesta PoredjenjaZamena mesta
100 7121482,8425812,595899
200 1,6823289,7361,36610,3073,503
500 5,10291953,1134,04262,74621,083

Stoga, kada mozemo da podnesemo povremenu "eksploziju" u O(n2), i dalje mozemo ocekivati da ce u proseku Quick Sort dati znacajno bolje performanse - pogotovo ako se koriste neka od modifikovanih procedura za izbor srednjeg elementa.

Vecina komercijalnih aplikacija bi koristila Quick Sort za poboljsanje prosecnih performansi: one mogu da tolerisu povremeno sporije izvrsavanje (sto otprilike znaci da ce trebati malo vise vremena za kreiranje izvestaja u danima punog meseca u prestupnim godinama) u zamenu za brze izvrsavanje u vecini slucajeva.

Medjutim, Quick Sort ne bi trebalo nikad koristiti u aplikacijama koje garantuju vreme odziva, osim ako se ne tretira kao O(n2) algoritam prilikom racunanja vremena odziva u najgorem slucaju. Ako morate da pretpostavite O(n2) vreme, onda - ako je n malo, bolje ce biti da koristite sortiranje umetanjem - koje ima jednostavniji kod i, shodno tome, manje konstantne faktore.

A ukoliko je n veliko, tada bi ocigledno trebalo da koristite Heap Sort, jer garantuje O(nlog n) vreme. Softver kritican po zivot (medicinsko osmatranje, odrzavanje zivota u avionima i kosmickim letelicama) ili kritican po misiju (osmatranje i kontrola u industrijskim i istrazivackim postrojenjima koja rade sa opasnim materijalima, kontrola letelica, odbrana, itd) ce obicno imati i vreme odziva kao deo specifikacija sistema. U takvim sistema, nije prihvatljivo bazirati se na prosecnim performansama prilikom dizajna programa, vec se uvek mora uzeti u obzir najgori slucaj, i prema tome tretirati Quick Sort kao O(n2).

Za sada, nas najbolji algoritam za sortiranje ima O(nlog n) performanse: mozemo li da napravimo nesto bolje?

U opstem slucaju, odgovor je NE!

Medjutim, ako posedujemo dodatne informacije o objektima koje treba sortirati, tada mozda mozemo da sortiranje obavimo brze.

Pre toga, pogledacemo jos samo kako mozemo da iscedimo poslednju kap performansi iz Quick Sort-a.
Dalje na Poslednju kap performansi!
Nazad na Sadrzaj
© John Morris, 1998. Prevod sa engleskog, Dragan Stevanovic, 2002.