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.