Wyszukiwanie binarne to szybki sposób znajdowania szukanej wartości na posortowanej liście. Sprawdzasz element środkowy, odrzucasz połowę pozostałych wartości i powtarzasz ten proces. Jeśli lista nie jest uporządkowana, ta logika nie działa.
Na liście rosnącej zasada jest prosta: jeśli wartość środkowa jest mniejsza od szukanej, szukaj po prawej stronie; jeśli jest większa, szukaj po lewej. Ponieważ zakres za każdym razem zmniejsza się mniej więcej o połowę, wyszukiwanie binarne działa w czasie .
Jak działa wyszukiwanie binarne na posortowanej liście
Użyj tej posortowanej listy:
Załóżmy, że szukana wartość to .
Zacznij od całego zakresu. Wartość środkowa to . Ponieważ , wszystko na lewo od można odrzucić, więc wyszukiwanie jest kontynuowane w
Teraz wartość środkowa to . Ponieważ , wszystko na prawo od można odrzucić, więc zakres staje się
Teraz wartość środkowa to , więc wyszukiwanie się kończy. Ważna idea nie polega tylko na tym, że znaleziono szukaną wartość. W dwóch porównaniach zakres kandydatów zmniejszył się z wartości do .
Dlaczego wyszukiwanie binarne ma złożoność
Każde porównanie usuwa około połowy pozostałych kandydatów. Po jednym kroku zostaje około elementów. Po dwóch krokach zostaje około elementów. Po krokach pozostały rozmiar wynosi około
Wyszukiwanie kończy się, gdy ta wartość wynosi około , więc liczba kroków spełnia zależność
Po wzięciu z obu stron otrzymujemy
Dlatego wyszukiwanie binarne dobrze się skaluje. Wyszukiwanie liniowe może wymagać nawet sprawdzeń, ale wyszukiwanie binarne potrzebuje tylko tylu sprawdzeń, ile potrzeba, by wciąż dzielić zakres na pół.
Przykład kodu wyszukiwania binarnego
Oto standardowa wersja iteracyjna w Pythonie:
Potrzebujesz pomocy z zadaniem?
Prześlij pytanie i otrzymaj zweryfikowane rozwiązanie krok po kroku w kilka sekund.
Otwórz GPAI Solver →