logo

Binær søgealgoritme i C

En hurtig metode til at lokalisere et bestemt element i et sorteret array er en binær søgning. Den første opgave for denne algoritme er at sammenligne målværdien med arrayets midterste element. Søgningen anses for at være vellykket, hvis målværdien er indeholdt i det midterste element. Algoritmen vil se i venstre halvdel af arrayet, hvis målværdien er mindre end midterelementet. Programmet vil scanne den højre halvdel af arrayet, hvis målværdien er større end midterelementet. Denne metode gentages, indtil enten målværdien eller søgeområdet er opbrugt.

Anvendelse:

Databaser, søgemaskiner og databehandling er blot nogle få af de applikationer, der bruger den binære søgestrategi.

Egenskaber:

  • Matrixen af ​​inputværdier skal sorteres.
  • Med hver iteration formindsker metoden søgeområdet til det halve, hvilket gør det særligt effektivt til enorme datasæt.
  • Algoritmen har en O (log n) worst-case tidskompleksitet.
  • At finde den ønskede værdi udføres af programmet ved hjælp af en del-og-hersk-strategi.

Her er et ligetil eksempel på den binære søgealgoritme skrevet i C:

 #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></=>
  • Binary_search-funktionen accepterer fire argumenter: arrayet, der skal søges, venstre og højre søgeområdes grænser og målværdien, der skal søges efter. Funktionen returnerer sit indeks, hvis den ønskede værdi kan findes; ellers returnerer det -1.
  • Hovedfunktionen opretter en array arr og et værdimål. Binary_search-funktionen bruges derefter til at søge i arrayet efter den ønskede værdi. Funktionen returnerer det indeks, hvor målværdien var placeret, hvis den var, funktionen returnerer det indeks, hvor den blev fundet. Ellers vises meddelelsen 'Mål ikke fundet'.
  • Implementeringen af ​​den binære søgealgoritme er grundlæggende. Vi begynder med at sætte den venstre kant til arrayets indledende indeks og den højre grænse til arrayets sidste indeks. Når den venstre grænse er mindre end eller lig med den højre kant, løkkes arrayet en gang mere. Vi bruger formlen (venstre + højre) / 2 i løkken til at beregne det midterste indeks af søgeområdet. Denne formel beregner heltalsværdien af ​​det midterste indekss bund.
  • Det midterste medlem af arrayet kontrasteres med målværdien. Vi returnerer indekset for det midterste element, hvis de er ens. Vi ændrer den højre grænse til at være en mindre end det midterste indeks, hvis den ønskede værdi er mindre end det midterste element. Hvis ikke, justerer vi den venstre kant, så den er én mere end midterindekset. Det fortsætter vi med, indtil målværdien er opnået, eller søgerummet er udfyldt.
  • Den tidsmæssige kompleksitet af den binære søgealgoritme, hvor n er matrixstørrelsen, er O(log n). Dette er langt mere effektivt end lineær søgning, som har en tidsmæssig kompleksitet på O(n), hvor n er størrelsen af ​​arrayet.
  • Endelig tilbyder den binære søgeteknik en nyttig måde at lokalisere et bestemt medlem i et sorteret array. Det er nemt at bygge og har en O(log n) tidskompleksitet, hvilket gør det til en effektiv tilgang til store datasæt.

Fordele:

  • For store datasæt er den binære søgealgoritme usædvanlig effektiv, og den er i stand til at håndtere en lang række inputstørrelser.
  • Algoritmen er enkel at implementere i næsten alle programmeringssprog.

Ulemper:

  • Inden du bruger den binære søgeteknik, skal input-arrayet sorteres, hvilket tager mere tid og hukommelse.
  • Algoritmen kan ikke anvendes på usorterede arrays.
  • Algoritmen kan give unøjagtige resultater, hvis input-arrayet ikke er sorteret.
  • Den binære søgealgoritme er ikke egnet til små datasæt, da teknikkens overhead kan opveje fordelene.

Konklusion:

Et sorteret array kan hurtigt søges efter et specifikt element ved hjælp af den binære søgeteknik. Den anvender en opdel-og-hersk-strategi til at halvere søgeområdet med hver iteration, hvilket gør det muligt at være yderst effektivt til store datasæt. Inden du bruger den binære søgeteknik, skal input-arrayet dog sorteres, hvilket tager ekstra tid og hukommelse. Den binære søgealgoritme er et sofistikeret databehandlingsværktøj, der er meget udbredt i forskellige sektorer.