Wyszukiwanie binarne C ++

Wyszukiwanie binarne C ++
C ++ opracowuje wiele metod wyszukiwania w celu wyszukiwania określonej zmiennej z tablicy lub innej struktury danych. Wśród nich poszukiwanie binarne jest dość dobrze znane z szybkiej reakcji. Tablica zostanie przekonwertowana na pół w ramach wyszukiwania binarnego, gdy jest już posortowana. Porównanie zostanie dokonane przez średni punkt tablicy. Ta wartość punktu środkowego kazałaby nam przeszukać wymaganą wartość w lewej połowie tablicy lub prawej połowy. Połowa czasu na wyszukiwanie zostanie zapisane podczas pracy z metodą wyszukiwania binarnego w porównaniu z innymi metodami wyszukiwania. Zatem w tym łatwym artykule omówimy niektóre przykłady ilustrujące działanie wyszukiwania binarnego za pomocą iteracyjnych i rekurencyjnych metod wyszukiwania.

Po szybkim otwarciu terminalu, musisz potrzebować pliku C ++, aby utworzyć w nim binarny kod wyszukiwania. Dlatego proste polecenie słowa kluczowego, i.mi., „Touch” zostanie wykorzystany z tego powodu. Używamy go więc do utworzenia pliku C ++ o nazwie „Binary.CC ”i otwieranie go za pomocą wbudowanego edytora GNU Nano, który jest konfiguracją Ubuntu 20.04 System. Oba polecenia zostały już zademonstrowane za pomocą poniższego obrazu.

Przykład 01: Metoda iteracyjna

Pierwszą metodą, którą tutaj używaliśmy, jest iteracyjna metoda wyszukiwania binarnego. Byłoby to dość proste. Po otwarciu pliku w edytorze Nano dodaliśmy pliki nagłówka potrzebne do uruchomienia kodu. Przestrzeń nazw, która musi być standardem, jest konieczna dla kodu C ++ tutaj. Utworzono funkcję zdefiniowaną przez użytkownika o nazwie „wyszukiwanie”, aby przeprowadzić wyszukiwanie binarne. Ta funkcja zdefiniowana przez użytkownika bierze 4 argumenty w swoich parametrach, i.mi., „A []” dla tablicy, lewy dla tablic pozostawiony najwięcej wartości, prawy dla tablic prawej najwięcej wartości, i v, aby wartość do wyszukiwania w tablicy „A”.

Na początku tej funkcji użyliśmy prostej pętli „while”, aby sprawdzić, czy lewa lub pierwsza wartość tablicy jest mniejsza, czy równa w prawo (w końcu) tablicy, czy nie. Jeśli wartość jest mniejsza lub równa wartości najważniejszej, utworzy nowy punkt w tablicy, i.mi., Środek. Ten punkt środkowy został obliczony przy użyciu zarówno lewego, jak i prawego. Po znalezieniu punktu środkowego używamy instrukcji „If”, aby sprawdzić, czy wartość w środkowym indeksie tablicy „A” jest taka sama jak wartość wymagana.mi., „V”. Jeśli warunek stał się skuteczny, a wartość „V” dopasowana do wartości średniego indeksu, zwróci środkowe indeks tablicy. Na początku nasza tablica ma dwie połowy, lewe i prawe. Lewa zawiera mniejsze wartości, podczas gdy prawy zawiera większe wartości w porównaniu z wartością Indeksu Środkowego. Gdy wartość w punkcie środkowym jest mniejsza niż wartość do przeszukania, nie musimy brać pod uwagę lewej połowy tablicy, ponieważ będzie to zawierać mniejsze wartości.

Będziemy więc aktualizować naszą lewą zmienną o indeks „MID+1”. Z drugiej strony, jeśli wartość średnia jest większa niż wartość wymagana do sprawdzenia, musimy zignorować prawą połowę (większe wartości) tablicy. Tak więc odpowiednia zmienna zostanie zaktualizowana o nową wartość, i.mi., „Połowa 1”. Proces ten będzie działał, dopóki po lewej tablicy nie będzie równy lub mniej niż prawy punkt tablicy. Jeśli nie są spełnione warunki, nie znaleźliśmy wartości w tablicy i zwracając -1 jako indeks do głównej metody.

Teraz doszedł do implementacji funkcji Main (). W ramach tej funkcji zadeklarowaliśmy tablicę o nazwie „A” z niektórymi wartościami całkowitymi. Tablica jest już posortowana w kolejności rosnącej. Wówczas zainicjowano zmienną „v”, w której zostanie zapisana wartość wprowadzona przez użytkownika. Instrukcja Cout mówi użytkownikowi, aby wprowadził pewien numer, podczas gdy instrukcja CIN służy do zbierania danych wejściowych użytkownika i zapisanie go na zmiennej „V”.

Kolejna zmienna, „N”, została zdefiniowana, aby uzyskać całkowity rozmiar tablicy z użyciem funkcji sizeof () w tablicy „A”. Kolejna zmienna, „Val”, została użyta do uzyskania indeksu z metody wyszukiwania jako wartości zwracania, wywołując ją. Wywołanie funkcji przekazuje tablicę A, lewy punkt jako 0, prawy punkt jako liczba całkowita „N-1” i wartość „V” do przeszukania. Jeśli metoda wyszukiwania zwróci „-1” do zmiennej „Val”, zostanie wykonana pierwsza instrukcja Cout; W przeciwnym razie drugi zostanie wykonany i wyświetli indeks dopasowanej wartości.

Zatem kod wymaga najpierw kompilacji. Po pierwszym i drugim wykonywaniu użytkownik wprowadził 14 i 19, i został dopasowany odpowiednio do indeksu 3 i 8, jak wyświetlono. Po trzecie. Kompilator G ++ jest tutaj dla Twojej pomocy.

Przykład 02: Metoda rekurencyjna

Chodziło o iteracyjną metodę wyszukiwania binarnego w C++. Miejmy drugą metodę przeprowadzania wyszukiwania binarnego w C ++, znanej i rekurencyjnej metodzie. Metoda rekurencyjna byłaby taka sama jak metoda iteracyjna, ale rekurencyjnie wywołuje metodę wyszukiwania binarnego. Będziemy to wyjaśniać kodem. Więc otwórz ten sam plik i zaktualizuj metodę wyszukiwania. Użyliśmy tego samego podczas pętli w metodzie wyszukiwania z tymi samymi warunkami, i.mi., Instrukcje IF-ELSE, pojedyncze instrukcja IF i obliczenia punktu środkowego.

Jedyna zmiana została przeprowadzona w instrukcji IF-Else funkcji wyszukiwania. Gdy wartość punktu środkowego jest większa niż wartość, którą należy przeszukać w metodzie wyszukiwania, a warunek jest spełniony, wywoła tę samą metodę wyszukiwania z niewielką zmianą parametrów. Wszystkie parametry będą takie same, z wyjątkiem „prawej” wartości punktu, który jest teraz indeksem „Mid-1”. Z drugiej strony, gdy wartość punktu środkowego jest mniejsza niż wartość do przeszukania, ja.mi., „V”, a warunek nie jest zadowolony, wywoła tę samą funkcję z niewielką zmianą w argumencie parametrów „lewy”. Lewy punkt zostanie zaktualizowany o indeks „Mid+1”.

Możesz zobaczyć, jak funkcja main () jest w 100% taka sama jak powyższy przykład iteracyjny i nie ma w niej ani jednej zmiany znaku.

Najpierw skompiluj ten zaktualizowany kod rekurencyjny z G ++, a następnie wykonaj go. Po pierwszym wykonaniu zwraca 3 w wyniku wartości 14, podczas gdy do tej pory nie znaleziono indeksu dla wartości 24 po drugim wykonaniu.

Wniosek:

Powyższy cały artykuł dotyczy wyszukiwania binarnego w C++. Wyszukiwanie binarne zostało odkryte i dobrze wyjaśnione dwiema różnymi metodami, i.mi., iteracyjny i rekurencyjny. Wszystkie wdrożone i wykazane przykłady są dość proste i łatwe do zrozumienia, ponieważ każdy krok został wyjaśniony dość krótko. Dlatego mamy duże nadzieje, że ten artykuł będzie równie korzystny dla naiwnego, nowego i eksperta.