W rozwoju oprogramowania tablice są używane wszędzie. "Inteligentne" typy danych we współczesnych językach programowania, takie jak dynamiczne tablice, zapewniają ogromne możliwości wygodnej pracy z obiektami. Ale algorytmy leżące u podstaw pracy z tymi typami danych, które powstały u zarania informatyki - w połowie XX wieku. Pierwszy algorytm wyszukiwania binarnego został opublikowany w 1946 roku. Rozważ najpopularniejsze algorytmy obsługi tablic.
Wyszukiwanie sekwencyjne
Wyszukiwanie według kolejności indeksów
Wyszukiwanie binarne
Przepełnienie wybranego typu danych
Środek tablicy = Wartość lewy + (Wartość lewostronna - Wartość prawidłowa) /2
Istnieje niebezpieczeństwo przepełnienia typu danych podczas operacji dodawania. Jeśli macierz jest tak duża, musisz użyć różnych technik, aby uniknąć ryzyka. Poniżej znajdują się standardowe błędy podczas projektowania wyszukiwania binarnego.
Błędy wartości
Lub pomyłki na jednostkę. Bardzo ważne jest rozważenie następujących opcji:
- Pusty układ.
- Brak wartości.
- Przekroczenie tablicy.
Wiele kopii
Należy zauważyć, żeW przypadku istnienia kilku identycznych wystąpień klucza w tablicy, program musi znaleźć określony (pierwszy, ostatni, następny).
& lt; script type = "text /javascript" & gt;
zmienna blockSettings2 = {blockID "R-A-271049-5" renderTo "yandex_rtb_R-A-70350-39" asynchroniczny :! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
! Zastosowanie (a, b, c, d, e) {A [c] = A [c] || [] A [c] .Push (funkcja () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("scenariusz")d = b.createElement ("scenariusz") d.type = "text /JavaScript" d.src = „//an.yandex .ru /System /context.js "d.async = 0e.parentNode.insertBefore (d, e)} (to this.document," yandexContextAsyncCallbacks „);
Rozważmy implementację tego algorytmu w języku programowania C plus. Zwróć uwagę, że wyszukiwanie binarne działa tylko z posortowaną tablicą! Jeśli tablica nie jest wstępnie posortowana, wynik obliczeń będzie nieprawidłowy.
Poniżej znajduje się kod w C ++. Początkowo początkowo inicjalizowana jest tablica zmiennych typu arr, o rozmiarze 10. Następnie operator cin in the loop czeka na wprowadzenie dziesięciu wartości od użytkownika (linia dziesięć).
W dwudziestej linii program oczekuje od użytkownika wprowadzenia wartości klucza.
Wiersze 29 - 35 reprezentują zaimplementowany algorytm przeszukiwania binarnego. Podczas programu zmiennej średniej rejestrowana wartość przeciętnego o wzorze
,Bliski tablica (połowa) = (liczba pozostałych (L) + Wartości prawej (R)) /2
,
Wiersz
arr [środek] == klucz
Sprawdzane jest, czy wartość środkowa jest wartością kluczową. Jeśli tak, wartość flagi flagi zmienia się na PRAWDA, to znaczy problem zostaje rozwiązany. Jeśli mediana jest większa niż wartość naszego klucza, to prawa strona (zmienna r) jest przypisana do połowy. JeśliWręcz przeciwnie, środek umieszcza się w r. Ten ostatni sprawdza flagę flagi binarnej.