Streszczenie
wykładu 03
W tym wykładzie kontynuować będziemy omawianie problemów wyszukiwania.
Zakładamy, że struktury danych, w których działać będą rozważane tu algorytmy,
mają określony liniowy porządek na elementach. Przedyskutujemy problem
równoczesnego wyszukiwania elementów minimalnego i maksymalnego. Da nam to
okazję do bardziej wnikliwej analizy kosztu średniego, oraz szczegółowej
dyskusji poprawności. Przedstawimy te dwa różne rozwiązania optymalne tego
problemu. Drugim zagadnieniem poruszanym w tym wykładzie jest problem
wyszukiwania k-tego co do wielkości elementu ciągu. Osobno przedyskutujemy
przypadek k=2, przedstawiając algorytm Turniej. Implementację tego algorytmu
omówimy w wykładzie szóstym. Rozwiązanie problemu w ogólnym przypadku jest
tematem ostatniego punktu tego wykładu. Omówimy proste rozwiązanie naiwne oraz
algorytm rekurencyjny Hoare. Istotną częścią tego algorytmu jest algorytm
Partition rozdzielania ciągu na elementy mniejsze i większe od pewnego elementu.
Algorytm ten będzie pełnił istotną rolę w algorytmie szybkiego sortowania, o
którym będzie mowa w następnym wykładzie. Dla wszystkich omawianych algorytmów
staramy się zbadać koszt oraz uzasadnić poprawność względem podanej
specyfikacji.