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

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

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

Przypisy

edytuj
  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
  • Selekcja (materiały dydaktyczne MIMUW na studia informatyczne I stopnia).