logo

Binäärihakualgoritmi C:ssä

Nopea tapa paikantaa tietty elementti lajitetusta taulukosta on binäärihaku. Tämän algoritmin lähtökohtana on verrata kohdearvoa taulukon keskielementtiin. Haku katsotaan onnistuneeksi, jos kohdearvo on keskimmäisessä elementissä. Algoritmi etsii taulukon vasemmasta puoliskosta, jos tavoitearvo on pienempi kuin keskielementti. Ohjelma skannaa taulukon oikean puolen, jos tavoitearvo on suurempi kuin keskielementti. Tätä menetelmää toistetaan, kunnes joko tavoitearvo tai hakualue on käytetty loppuun.

Käyttö:

Tietokannat, hakukoneet ja tietojenkäsittely ovat vain muutamia binaarihakustrategiaa käyttävistä sovelluksista.

Ominaisuudet:

  • Syöttöarvojen joukko on lajiteltava.
  • Jokaisella iteraatiolla menetelmä kutistaa hakualueen puoleen, mikä tekee siitä erityisen tehokkaan suurille tietojoukoille.
  • Algoritmilla on O (log n) pahimman tapauksen aikakompleksisuus.
  • Ohjelma löytää halutun arvon hajoa ja hallitse -strategian avulla.

Tässä on suora esimerkki C-kielellä kirjoitetusta binäärihakualgoritmista:

 #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-funktio hyväksyy neljä argumenttia: haettavan taulukon, vasemman ja oikean hakualueen rajat ja etsittävän kohdearvon. Funktio palauttaa indeksinsä, jos haluttu arvo löytyy; muuten se palauttaa -1.
  • Pääfunktio luo taulukon arr ja arvokohteen. Binary_search-funktiota käytetään sitten etsimään taulukosta haluttu arvo. Funktio palauttaa indeksin, jossa kohdearvo sijaitsi, jos se oli, funktio palauttaa indeksin, josta se löydettiin. Muussa tapauksessa näyttöön tulee viesti Kohdetta ei löydy.
  • Binäärihakualgoritmin toteutus on perustason. Aloitamme asettamalla vasemman reunan taulukon alkuindeksiin ja oikean reunan taulukon viimeiseksi indeksiksi. Kun vasen raja on pienempi tai yhtä suuri kuin oikea reuna, taulukko silmukoidaan vielä kerran. Käytämme kaavaa (vasen + oikea) / 2 silmukan sisällä laskeaksemme hakualueen keskiindeksin. Tämä kaava laskee keskiindeksin kerroksen kokonaisluvun.
  • Taulukon keskijäsen erotetaan tavoitearvon kanssa. Palautamme keskielementin indeksin, jos ne ovat yhtä suuret. Muutamme oikean rajan yhden pienemmäksi kuin keskiindeksi, jos haluttu arvo on pienempi kuin keskielementti. Jos ei, säädämme vasenta reunaa niin, että se on yksi enemmän kuin keskiindeksi. Jatkamme tätä, kunnes tavoitearvo on saatu tai hakutila täyttyy.
  • Binaarihakualgoritmin ajallinen monimutkaisuus, jossa n on taulukon koko, on O(log n). Tämä on paljon tehokkaampaa kuin lineaarinen haku, jonka ajallinen kompleksisuus on O(n), missä n on taulukon koko.
  • Lopuksi binäärihakutekniikka tarjoaa hyödyllisen tavan paikantaa tietty jäsen lajitetusta taulukosta. Se on helppo rakentaa ja siinä on O(log n) -ajan monimutkaisuus, mikä tekee siitä tehokkaan lähestymistavan suurille tietojoukoille.

Edut:

  • Suurille tietojoukoille binäärihakualgoritmi on poikkeuksellisen tehokas, ja se pystyy käsittelemään monenlaisia ​​syötekokoja.
  • Algoritmi on helppo toteuttaa lähes kaikilla ohjelmointikielillä.

Haitat:

  • Ennen binäärihakutekniikan käyttöä syöttötaulukko on lajiteltava, mikä vie enemmän aikaa ja muistia.
  • Algoritmia ei voi soveltaa lajittelemattomiin taulukoihin.
  • Algoritmi voi antaa epätarkkoja tuloksia, jos syöttötaulukkoa ei ole lajiteltu.
  • Binäärihakualgoritmi ei sovellu pienille tietojoukoille, koska tekniikan yleiskustannukset voivat olla suuremmat kuin sen hyödyt.

Johtopäätös:

Lajiteltua taulukkoa voidaan nopeasti etsiä tiettyä elementtiä käyttämällä binäärihakutekniikkaa. Se käyttää jakaa ja hallitse -strategiaa leikatakseen hakualueen puoleen jokaisella iteraatiolla, jolloin se on erittäin tehokas suurille tietojoukoille. Ennen binäärihakutekniikan käyttöä syötetaulukko on kuitenkin lajiteltava, mikä vie ylimääräistä aikaa ja muistia. Binäärihakualgoritmi on kehittynyt tietojenkäsittelytyökalu, jota käytetään laajasti eri aloilla.

"mikä on 10/100"