logo

Algorytm wyszukiwania binarnego w C

Szybką metodą zlokalizowania określonego elementu w posortowanej tablicy jest wyszukiwanie binarne. Początkowym zadaniem tego algorytmu jest porównanie wartości docelowej ze środkowym elementem tablicy. Wyszukiwanie uznaje się za zakończone sukcesem, jeśli wartość docelowa znajduje się w środkowym elemencie. Algorytm będzie szukać w lewej połowie tablicy, jeśli wartość celu jest mniejsza niż środkowy element. Program przeskanuje prawą połowę tablicy, jeśli wartość docelowa jest większa niż środkowy element. Metodę tę powtarza się aż do wyczerpania wartości celu lub zakresu wyszukiwania.

Stosowanie:

Bazy danych, wyszukiwarki i przetwarzanie danych to tylko niektóre aplikacje korzystające ze strategii wyszukiwania binarnego.

co to jest polecenie eksportu w systemie Linux

Charakterystyka:

  • Tablica wartości wejściowych musi zostać posortowana.
  • Z każdą iteracją metoda zmniejsza zakres wyszukiwania o połowę, co czyni ją szczególnie efektywną w przypadku dużych zbiorów danych.
  • Algorytm ma złożoność czasową w najgorszym przypadku O (log n).
  • Znalezienie pożądanej wartości odbywa się przez program przy użyciu strategii dziel i zwyciężaj.

Oto prosty przykład algorytmu wyszukiwania binarnego napisanego w C:

alfabet w liczbach
 #include int binary_search(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right - left) 2; if (arr[mid]="=" target) return mid; } else < left="mid" 1; right="mid" -1; target not found main() arr[]="{1," 3, 5, 7, 9}; n="sizeof(arr)" sizeof(arr[0]); index="binary_search(arr," 0, 1, target); (index="=" -1) printf('target found
'); at %d
', index); 0; pre> <p> <strong>Output:</strong> </p> <pre> Target found at index 2 </pre> <ul> <li>The binary_search function accepts four arguments: the array to search, the left and right search range boundaries, and the target value to look for. The function returns its index if the desired value can be found; else, it returns -1.</li> <li>The main function creates an array arr and a value target. The binary_search function is then used to search the array for the desired value. The function returns the index where the target value was located if it was, the function returns the index at which it was found. Otherwise, the message &apos;Target not found&apos; is displayed.</li> <li>The binary search algorithm&apos;s implementation is basic. We begin by setting the left border to the array&apos;s initial index and the right boundary to the array&apos;s last index. Once the left boundary is less than or equal to the right border, the array is looped through one more time. We use the formula (left + right) / 2 within the loop to calculate the middle index of the search range. This formula computes the integer value of the middle index&apos;s floor.</li> <li>The centre member of the array is contrasted with the target value. We return the index of the middle element if they are equal. We change the right boundary to be one less than the middle index if the desired value is less than the middle element. If not, we adjust the left border so that it is one more than the centre index. We continue doing this until the goal value is obtained or the search space is filled.</li> <li>The temporal complexity of the binary search algorithm, where n is the array size, is O(log n). This is far more efficient than linear search, which has a temporal complexity of O(n), where n is the size of the array.</li> <li>Finally, the binary search technique offers a useful way to locate a particular member in a sorted array. It is easy to build and has an O(log n) time complexity, making it an efficient approach for large datasets.</li> </ul> <h3>Advantages:</h3> <ul> <li>For large datasets, the binary search algorithm is exceptionally efficient, and it is capable of handling a wide range of input sizes.</li> <li>The algorithm is simple to implement in almost all programming languages.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>Before using the binary search technique, the input array must be sorted, which takes more time and memory.</li> <li>The algorithm cannot be applied to unsorted arrays.</li> <li>The algorithm may yield inaccurate results if the input array is not sorted.</li> <li>The binary search algorithm is not appropriate for tiny datasets since the technique&apos;s overhead may outweigh its benefits.</li> </ul> <h2>Conclusion:</h2> <p>A sorted array can be quickly searched for a specific element using the binary search technique. It employs a divide-and-conquer strategy to cut the search range in half with each iteration, allowing it to be highly efficient for large datasets. However, before using the binary search technique, the input array must be sorted, which takes extra time and memory. The binary search algorithm is a sophisticated data processing tool that is widely utilised in various sectors.</p> <hr></=>
  • Funkcja binary_search przyjmuje cztery argumenty: tablicę do przeszukania, lewą i prawą granicę zakresu wyszukiwania oraz wartość docelową do wyszukania. Funkcja zwraca swój indeks, jeśli można znaleźć żądaną wartość; w przeciwnym razie zwraca -1.
  • Funkcja główna tworzy tablicę arr i wartość docelową. Następnie używana jest funkcja binary_search do przeszukiwania tablicy pod kątem żądanej wartości. Funkcja zwraca indeks, w którym znajdowała się wartość docelowa, jeśli była, funkcja zwraca indeks, pod którym została znaleziona. W przeciwnym razie wyświetli się komunikat „Nie znaleziono celu”.
  • Implementacja algorytmu wyszukiwania binarnego jest podstawowa. Zaczynamy od ustawienia lewej krawędzi na początkowy indeks tablicy, a prawej na ostatni indeks tablicy. Gdy lewa granica jest mniejsza lub równa prawej granicy, tablica jest powtarzana jeszcze raz. Używamy wzoru (lewy + prawy) / 2 w pętli, aby obliczyć środkowy indeks zakresu wyszukiwania. Ta formuła oblicza wartość całkowitą najniższego piętra środkowego indeksu.
  • Środkowy element tablicy kontrastuje z wartością docelową. Zwracamy indeks środkowego elementu, jeśli są one równe. Zmieniamy prawą granicę na o jeden mniejszą niż środkowy indeks, jeśli żądana wartość jest mniejsza niż środkowy element. Jeśli nie, dostosowujemy lewą ramkę tak, aby była o jeden większa niż środkowy indeks. Kontynuujemy tę czynność do momentu uzyskania wartości celu lub zapełnienia przestrzeni poszukiwań.
  • Złożoność czasowa algorytmu wyszukiwania binarnego, gdzie n jest rozmiarem tablicy, wynosi O (log n). Jest to znacznie bardziej wydajne niż wyszukiwanie liniowe, którego złożoność czasowa wynosi O(n), gdzie n jest rozmiarem tablicy.
  • Wreszcie technika wyszukiwania binarnego oferuje użyteczny sposób zlokalizowania konkretnego elementu w posortowanej tablicy. Jest łatwy w budowie i ma złożoność czasową O(log n), co czyni go skutecznym podejściem w przypadku dużych zbiorów danych.

Zalety:

  • W przypadku dużych zbiorów danych algorytm wyszukiwania binarnego jest wyjątkowo wydajny i może obsługiwać szeroki zakres rozmiarów danych wejściowych.
  • Algorytm jest prosty do wdrożenia w prawie wszystkich językach programowania.

Niedogodności:

  • Przed użyciem techniki wyszukiwania binarnego tablicę wejściową należy posortować, co zajmuje więcej czasu i pamięci.
  • Algorytmu nie można zastosować do nieposortowanych tablic.
  • Algorytm może dawać niedokładne wyniki, jeśli tablica wejściowa nie jest posortowana.
  • Algorytm wyszukiwania binarnego nie jest odpowiedni dla małych zbiorów danych, ponieważ obciążenie związane z tą techniką może przewyższać korzyści.

Wniosek:

Posortowaną tablicę można szybko przeszukać pod kątem określonego elementu, korzystając z techniki wyszukiwania binarnego. Wykorzystuje strategię dziel i zwyciężaj, aby przy każdej iteracji zmniejszać zakres wyszukiwania o połowę, dzięki czemu jest bardzo wydajny w przypadku dużych zbiorów danych. Jednakże przed użyciem techniki wyszukiwania binarnego tablica wejściowa musi zostać posortowana, co wymaga dodatkowego czasu i pamięci. Algorytm wyszukiwania binarnego to wyrafinowane narzędzie do przetwarzania danych, które jest szeroko stosowane w różnych sektorach.