logo

Algoritam binarnog pretraživanja u C-u

Brza metoda za lociranje određenog elementa u sortiranom nizu je binarno pretraživanje. Početni zadatak ovog algoritma je usporediti ciljnu vrijednost sa srednjim elementom niza. Pretraživanje se smatra uspješnim ako je ciljna vrijednost sadržana u srednjem elementu. Algoritam će tražiti lijevu polovicu niza ako je ciljna vrijednost manja od središnjeg elementa. Program će skenirati desnu polovicu niza ako je vrijednost cilja veća od središnjeg elementa. Ova se metoda ponavlja sve dok se ciljna vrijednost ili raspon pretraživanja ne iscrpe.

popis religija

Upotreba:

Baze podataka, tražilice i obrada podataka samo su neke od aplikacija koje koriste strategiju binarnog pretraživanja.

Karakteristike:

  • Niz ulaznih vrijednosti mora biti sortiran.
  • Sa svakom iteracijom, metoda smanjuje raspon pretraživanja za pola, što je čini posebno učinkovitom za ogromne skupove podataka.
  • Algoritam ima O (log n) vremensku složenost najgoreg slučaja.
  • Pronalaženje željene vrijednosti vrši program koristeći strategiju podijeli i vladaj.

Evo jednostavnog primjera algoritma binarnog pretraživanja napisanog u C-u:

 #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></=>
  • Funkcija binary_search prihvaća četiri argumenta: polje za pretraživanje, lijevu i desnu granicu raspona pretraživanja i ciljnu vrijednost za traženje. Funkcija vraća svoj indeks ako se željena vrijednost može pronaći; inače vraća -1.
  • Glavna funkcija stvara polje arr i ciljnu vrijednost. Funkcija binary_search zatim se koristi za traženje željene vrijednosti u polju. Funkcija vraća indeks na kojem se ciljna vrijednost nalazila, ako jest, funkcija vraća indeks na kojem je pronađena. U protivnom se prikazuje poruka 'Cilj nije pronađen'.
  • Implementacija algoritma binarnog pretraživanja je osnovna. Počinjemo postavljanjem lijeve granice na početni indeks niza, a desne granice na posljednji indeks niza. Nakon što je lijeva granica manja ili jednaka desnoj granici, niz se još jednom provlači kroz petlju. Koristimo formulu (lijevo + desno) / 2 unutar petlje za izračun srednjeg indeksa raspona pretraživanja. Ova formula izračunava cjelobrojnu vrijednost donjeg poda srednjeg indeksa.
  • Središnji član niza je u kontrastu s ciljnom vrijednošću. Vraćamo indeks srednjeg elementa ako su jednaki. Mijenjamo desnu granicu da bude jedan manji od srednjeg indeksa ako je željena vrijednost manja od srednjeg elementa. Ako nije, lijevi obrub namjestimo tako da bude jedan veći od središnjeg indeksa. To nastavljamo dok ne dobijemo ciljnu vrijednost ili dok ne popunimo prostor za pretraživanje.
  • Vremenska složenost algoritma binarnog pretraživanja, gdje je n veličina niza, je O(log n). Ovo je daleko učinkovitije od linearnog pretraživanja, koje ima vremensku složenost O(n), gdje je n veličina niza.
  • Konačno, tehnika binarnog pretraživanja nudi koristan način za lociranje određenog člana u sortiranom nizu. Lako ga je izraditi i ima O(log n) vremensku složenost, što ga čini učinkovitim pristupom za velike skupove podataka.

Prednosti:

  • Za velike skupove podataka, algoritam binarnog pretraživanja iznimno je učinkovit i sposoban je rukovati širokim rasponom veličina ulaza.
  • Algoritam je jednostavan za implementaciju u gotovo svim programskim jezicima.

Nedostaci:

  • Prije korištenja tehnike binarnog pretraživanja, ulazni niz mora biti sortiran, što zahtijeva više vremena i memorije.
  • Algoritam se ne može primijeniti na nesortirane nizove.
  • Algoritam može dati netočne rezultate ako ulazni niz nije sortiran.
  • Algoritam binarnog pretraživanja nije prikladan za male skupove podataka budući da troškovi tehnike mogu nadmašiti njezine prednosti.

Zaključak:

Razvrstani niz može se brzo pretražiti za određenim elementom pomoću tehnike binarnog pretraživanja. Koristi strategiju zavadi i vladaj kako bi prepolovio raspon pretraživanja sa svakom iteracijom, što mu omogućuje da bude vrlo učinkovit za velike skupove podataka. Međutim, prije korištenja tehnike binarnog pretraživanja, ulazni niz mora biti sortiran, što zahtijeva dodatno vrijeme i memoriju. Algoritam binarnog pretraživanja je sofisticirani alat za obradu podataka koji se široko koristi u raznim sektorima.