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
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
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:
Ś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ż
Przypisy
- ↑ L.Banachowski W.Rytter K.Diks, Algorytmy i struktury danych, ISBN 83-204-3224-3.