Wyszukiwanie binarne - implementacja algorytmu
Polecenie 1
Napisz program, który sprawdzi, czy uporządkowany zbiór dane zawiera element o wartości szukany_element. Swoje rozwiązanie przetestuj dla pięcioelementowego zbioru {2, 4, 6, 8, 10} oraz szukany_element = 4.
Specyfikacja problemu:
Dane:
dane– zbiór liczb całkowitychszukany_elementy– element szukany w zbiorze
Wynik:
Na konsoli wyświetli się indeks szukanego elementu (komunikat Znaleziono szukany element pod indeksem: [indeks]) lub komunikat o braku elementu w zbiorze (komunikat Nie znaleziono szukanego elementu).
Wersja iteracyjna
Polecenie 2
Porównaj swoje rozwiązanie z tym przedstawionym w filmie.
Plik zawierający kod programu do pobrania
Plik TXT o rozmiarze 784.00 B w języku polskim
Wersja rekurencyjna
Linia 1. def wyszukiwanie podkreślnik binarne podkreślnik rek otwórz nawias okrągły lista przecinek szukana przecinek lewy przecinek prawy zamknij nawias okrągły dwukropek.
Linia 2. if lewy zamknij nawias ostrokątny prawy dwukropek.
Linia 3. return minus 1 kratka element nie został znaleziony.
Linia 5. srodek znak równości otwórz nawias okrągły lewy plus prawy zamknij nawias okrągły prawy ukośnik prawy ukośnik 2.
Linia 7. if lista otwórz nawias kwadratowy srodek zamknij nawias kwadratowy znak równości znak równości szukana dwukropek.
Linia 8. return srodek.
Linia 9. elif lista otwórz nawias kwadratowy srodek zamknij nawias kwadratowy zamknij nawias ostrokątny szukana dwukropek.
Linia 10. return wyszukiwanie podkreślnik binarne podkreślnik rek otwórz nawias okrągły lista przecinek szukana przecinek lewy przecinek srodek minus 1 zamknij nawias okrągły.
Linia 11. else dwukropek.
Linia 12. return wyszukiwanie podkreślnik binarne podkreślnik rek otwórz nawias okrągły lista przecinek szukana przecinek srodek plus 1 przecinek prawy zamknij nawias okrągły.
Linia 15. kratka Przykład użycia.
Linia 16. dane znak równości otwórz nawias kwadratowy 2 przecinek 4 przecinek 5 przecinek 7 przecinek 9 przecinek 12 przecinek 15 zamknij nawias kwadratowy.
Linia 17. x znak równości 9.
Linia 19. wynik znak równości wyszukiwanie podkreślnik binarne podkreślnik rek otwórz nawias okrągły dane przecinek x przecinek 0 przecinek len otwórz nawias okrągły dane zamknij nawias okrągły minus 1 zamknij nawias okrągły.
Linia 20. if wynik wykrzyknik znak równości minus 1 dwukropek.
Linia 21. print otwórz nawias okrągły f cudzysłów Element otwórz nawias klamrowy x zamknij nawias klamrowy znaleziony na indeksie otwórz nawias klamrowy wynik zamknij nawias klamrowy cudzysłów zamknij nawias okrągły.
Linia 22. else dwukropek.
Linia 23. print otwórz nawias okrągły f cudzysłów Element otwórz nawias klamrowy x zamknij nawias klamrowy nie został znaleziony cudzysłów zamknij nawias okrągły.
Ważne!
Złożoność czasowa:
Warunek działania: lista musi być posortowana
Rekurencja: dzieli zakres wyszukiwania na połowy
