Wyszukiwanie binarne¶
Opis problemu¶
Istnienie elementu¶
Implementacja¶
Opis implementacji¶
Funkcja binarySearch przyjmuje cztery argumenty: lst (lista, w której szukamy), num (liczba, której szukamy), left (indeks początkowy przeszukiwania) i right (indeks końcowy przeszukiwania). Podstawą funkcji jest podejście rekurencyjne, dzielące problem na mniejsze części.
- Najpierw sprawdzamy, czy indeks początkowy jest większy niż końcowy. Jeśli tak, oznacza to, że liczba nie została znaleziona, więc funkcja zwraca
False. - Następnie obliczamy środkowy indeks listy (
mid). Jeśli element w środku listy jest równy szukanej liczbie (num), funkcja zwracaTrue. - Jeśli element środkowy jest mniejszy niż
num, funkcja ponownie wywołuje siebie, ale tym razem z przesuniętym indeksem początkowym na pozycję za środkowym indeksem (mid + 1). - W przeciwnym razie, jeśli element środkowy jest większy niż
num, funkcja ponownie wywołuje się z indeksem końcowym ustawionym na jeden przed środkowym (mid - 1).
W części main, definiujemy uporządkowaną listę lst i liczbę num, którą chcemy znaleźć. Wywołujemy funkcję binarySearch z tymi wartościami oraz z początkowym i końcowym indeksem listy. Wynik wyszukiwania (result) określa, czy liczba znajduje się w liście, czy nie. W zależności od wyniku, program wyświetla odpowiedni komunikat.
Pozycja elementu¶
Implementacja¶
Opis implementacji¶
Funkcja binarySearch przyjmuje cztery argumenty: listę lst, szukaną liczbę num, oraz indeksy left i right, które określają zakres przeszukiwania w liście.
- Warunek końca: jeśli
leftjest większe niżright, oznacza to, że przeszukiwany zakres został wyczerpany, a liczba nie została znaleziona. W takim przypadku, funkcja zwraca-1. - Znalezienie liczby: obliczamy środkowy indeks (
mid) listy. Jeśli element w środku jest równy szukanej liczbie (num), funkcja zwraca ten indeks. - Przeszukiwanie prawej części: jeżeli element środkowy jest mniejszy niż
num, funkcja kontynuuje wyszukiwanie w prawej części listy, aktualizując indeksleftnamid + 1. - Przeszukiwanie lewej części: w przeciwnym razie, jeśli element środkowy jest większy niż
num, wyszukiwanie jest kontynuowane w lewej części, aktualizując indeksrightnamid - 1.
W części main programu, definiujemy posortowaną listę lst i liczbę num, której indeks chcemy znaleźć. Następnie wywołujemy funkcję binarySearch z odpowiednimi parametrami. Wynik, jaki otrzymujemy, to indeks szukanej liczby w liście.
- Jeśli wynik to
-1, oznacza to, że liczba nie znajduje się w liście, co jest sygnalizowane odpowiednim komunikatem. - W przeciwnym wypadku, program wyświetla indeks, pod którym znajduje się szukana liczba.