Algorytm Hoare’a
Algorytm Hoare’a – algorytm rozwiązujący problem selekcji, czyli wyznaczający -tą co do wielkości (-tą statystykę pozycyjną) spośród danych liczb[1]. Opiera się na pomyśle podobnym do algorytmu sortowania szybkiego, czyli na podziale zbioru na elementy mniejsze i większe od wybranego[1]. Pomysłodawcą obu algorytmów jest Antony Hoare[2].
Działanie
[edytuj | edytuj kod]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, gdyż 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]- ↑ a b c Lech Banachowski , Krzysztof Diks , Wojciech Rytter , Algorytmy i struktury danych, Wydawnictwo Naukowe PWN, 2018, s. 84-86, ISBN 978-83-01-19712-4 (pol.).
- ↑ C.A.R. Hoare , Algorithm 65: find, „Communications of the ACM”, 4 (7), 1961, s. 321–322, DOI: 10.1145/366622.366647, ISSN 0001-0782 [dostęp 2024-05-18] .