Algorytm Hoare’a
Algorytm Hoare’a – prosty algorytm rozwiązujący problem selekcji. Problem selekcji polega na wyznaczeniu -tej co do wielkości wśród liczb.
Algorytm[edytuj | edytuj kod]
Algorytm Hoare’a opiera się na pomyśle podobnym co algorytm QuickSort, mianowicie na podziale zbioru na liczby mniejsze i większe od wybranego elementu. Nieprzypadkowo zresztą, pomysłodawcą obu algorytmów jest ten sam człowiek, C.A.R. Hoare.
Działanie algorytmu jest następujące, powiedzmy, że dany jest zbiór zawierający liczb. Zadanie polega na wybraniu -tej co do wielkości. Wybieramy losową liczbę ze zbioru i dzielimy ten zbiór na elementy mniejsze lub równe od (zbiór ) oraz liczby większe od niej (zbiór ). Następnie, jeśli moc zbioru jest większa lub równa to rekurencyjnie szukamy w tym zbiorze -tego elementu, w przeciwnym przypadku rekurencyjnie szukamy w zbiorze elementu co do wielkości.
Złożoność czasowa[edytuj | edytuj kod]
Pesymistyczna złożoność czasowa to możemy bowiem (podobnie jak w QuickSorcie) wybierać cały czas do podziału największy element.
Równanie na oczekiwaną złożoność czasową w modelu permutacyjnym[1]:
Średnia złożoność jest liniowa.
Podany algorytm nie jest optymalny dla problemu selekcji, algorytm magicznych piątek działa pesymistycznie w czasie liniowym, więc jest znacząco lepszy.
Zobacz też[edytuj | edytuj kod]
Przypisy[edytuj | edytuj kod]
- ↑ L.Banachowski W.Rytter K.Diks , Algorytmy i struktury danych, ISBN 83-204-3224-3 .