Introsort — разлика између измена

183 бајта уклоњена ,  пре 8 година
нема резимеа измене
'''Introsort''' ili '''introspektivno sortiranje''' predstavlja algoritam sortiranja koji je dizajnirao David Musser 1997. godine. Počinje sa [[kviksort]]om i prelazi na hipsort kada dubina rekurzije predje nivo koji se izračunava na osnovu ([[logaritam|logaritma]] od) broja elemenata koji se sortiraju. Kombinuje dobre stvari oba algoritma, sa složenošću najgoreg slučaja [[Велико_О|O]]''(n'' log ''n'') i performansi u praksi sličnih kviksortu. Pošto oba algoritma koje koristi [[Алгоритми_сортирања#.D0.90.D0.BB.D0.B3.D0.BE.D1.80.D0.B8.D1.82.D0.BC.D0.B8_.D1.81.D0.BE.D1.80.D1.82.D0.B8.D1.80.D0.B0.D1.9A.D0.B0_.D0.BF.D0.BE.D1.80.D0.B5.D1.92.D0.B5.D1.9A.D0.B5.D0.BC|sortiraju poredjenjem]] onda i on predstavlja algoritam sortiranja poredjenjem
 
{{Infobox Algorithm
|class=[[Sorting algorithm]]
|image=
|caption=
|data=[[Array data structure|Array]]
|time=O(''n'' log ''n'')
|average-time=O(''n'' log ''n'')
|space=
|optimal=
}}
 
U kviksortu, jedna od najvažnijih operacije je izbor pivota: element oko koga se niz deli. Najjednostavniji način je da se za pivot uzme prvi ili poslednji element niza, što dovodi do lošeg ponašanja algoritma u slučaju sortiranog ili delimočno sortiranog ulaza. U varijanti Niklaus Wirth-a koristi se srednji element kako bi se takve stvari sprečile, spuštajući efikasnost na O(n²) za iskonstruisane delove.. Postoji i tzv median-of-3 algoritam koji za pivota bira srednji element izmedju prvog, poslednjeg i srednjeg elementa niza; međutim, iako se ovo pokazalo kao dobro rešenje na mnogim ulazima u praksi, i dalje je moguće konstruisati listu koja bi drastično usporla kviksort ukoliko se upotrebljava ova tehnika za odabir pivota(tzv. ''median-of-3 killer list''). Takvi ulazi bi potencijalno mogli biti iskorišćeni od strane agresora, na primer slanjem takve liste na server da bi se izazvao [[Заштита_од_DoS_напада#-.7BDoS.7D-_.D0.BD.D0.B0.D0.BF.D0.B0.D0.B4|DoS]] (Denial of Service) napad.
63

измене