Przejdź do zawartości

Algorytm Hoare’a

Z Wikipedii, wolnej encyklopedii

Algorytm Hoare’aalgorytm 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]

  1. 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.).
  2. C.A.R. Hoare, Algorithm 65: find, „Communications of the ACM”, 4 (7), 1961, s. 321–322, DOI10.1145/366622.366647, ISSN 0001-0782 [dostęp 2024-05-18].

Bibliografia[edytuj | edytuj kod]

  • Selekcja (materiały dydaktyczne MIMUW na studia informatyczne I stopnia).