Wyszukiwanie binarne (wersja iteracyjna)
Wyszukiwanie binarne
Specyfikacja problemu:
Dane:
n– liczba naturalna; liczba elementów tablicytablicatablica–n-elementowa, uporządkowana rosnąco tablica liczb naturalnychszukana– liczba naturalna
Wynik:
komunikat wskazujący indeks, pod którym znajduje się szukana liczba, lub informujący, że w tablicy nie ma szukanej liczby
Algorytm wyszukiwania binarnego wyszukuje wybrany element w posortowanym w zbiorze.
Zasada działania algorytmu nie zmienia się. Algorytm nie wywołuje się rekurencyjnie, wykorzystujemy natomiast pętlę dopóki.
Zapisujemy nagłówek funkcji wyszukiwanie_binarne_iter. Przyjmie ona cztery argumenty – tablicę liczb, szukaną wartość, indeks początku oraz indeks końca.
W kolejnym kroku określimy środek analizowanego przedziału, przypisując zmiennej środek wartość dzielenia całkowitego sumy wartości zmiennych pocz oraz kon przez liczbę 2.
Następnie zapiszemy instrukcję warunkową jeżeli. Sprawdzamy, czy szukana liczba jest równa wartości elementu tablicy o indeksie równym wartości zmiennej środek. Jeśli tak, wypisujemy odpowiedni komunikat.
Jeśli element nie jest równy elementowi przechowywanemu pod indeksem środek, sprawdzamy, czy jest on od niego mniejszy. Jeśli tak, zmieniamy wartość zmiennej pocz, przypisując jej wartość sumy zmiennej środek oraz liczby 1.
Jeżeli element jest mniejszy, przypisujemy zmiennej kon wartość różnicy zmiennej środek oraz liczby 1.
Jeśli po wyjściu z pętli dopóki element nie został znaleziony, wypisujemy odpowiedni komunikat.
W rozwiązaniu wykorzystujemy operator div. Operator div oznacza dzielenie całkowitoliczbowe.
Algorytm wyszukiwania binarnego działa przez podział zakresu wyszukiwania na dwie równe części i wybór tej, która zawiera szukaną wartość (lub może ją zawierać). Dzięki temu zakres wyszukiwania jest dzielony na pół w każdej iteracji. W konsekwencji każdy podział sprowadzi problem do problemu o połowę mniejszego.
W związku z tym, jeżeli mamy tablicę o długości , to w najgorszym wypadku potrzebujemy podziałów, aby zawęzić zakres wyszukiwania do jednego elementu. Stąd złożoność czasowa wynosi .
Słownik
taka osoba, którą znają wszyscy, a która nie zna nikogo
wartość w zbiorze n-elementowym, która powtarza się więcej niż razy
element umieszczany w zbiorze danych, który ma zostać przeszukany z wykorzystaniem algorytmu wyszukiwania liniowego
algorytm odnajdowania elementów w uporządkowanych zbiorach; polega na wielokrotnym dzieleniu przeszukiwanego zbioru na dwie równe części i porównywaniu wartości szukanej z elementem znajdującym się w środku dzielonego obszaru
algorytm wyszukiwania elementu w zbiorze danych polegający na porównywaniu poszukiwanego elementu z elementami zbioru danych
ilość czasu potrzebna do wykonania zadania, wyrażona jako funkcja ilości danych
ilość zasobów komputerowych potrzebnych do wykonania zadania; złożoność obliczeniowa obejmuje złożoność pamięciową i czasową
ilość pamięci potrzebnej do wykonania zadania, wyrażona jako funkcja ilości danych