logo

C-ohjelma etsimään elementtiä taulukosta

Tässä artikkelissa käsittelemme C-ohjelmaa elementin etsimiseksi taulukosta niiden eri tavoilla ja esimerkeillä.

Mikä on Array?

A tietorakenne nimeltään an joukko sisältää kiinteän pituisen sarjan samantyyppisiä esineitä. Sitä käytetään usein tietokokoelmien tallentamiseen ja käsittelemiseen, koska indeksointi mahdollistaa tehokkaan käytön.

mockito milloin tahansa

Esim: väliluvut[] = {10, 20, 30, 40, 50};

Elementin etsiminen taulukosta

Tyypillinen tietokoneohjelmointitoiminto etsii tiettyä elementtiä taulukosta. Koodisi tehokkuutta voidaan parantaa huomattavasti käyttämällä tehokkaita hakualgoritmeja, etsitpä sitten tietyn arvon olemassaoloa, joka paikantaa elementin indeksin, tai tarkista, onko elementti olemassa. Tässä artikkelissa käsitellään monia menetelmiä taulukon elementtien etsimiseen C-ohjelmointikielellä.

On pääasiassa kaksi tapaa etsiä elementtiä taulukosta:

1. Lineaarinen haku

Suoraviivaista hakustrategiaa, jota käytetään tietyn elementin paikantamiseen taulukosta tai luettelosta, kutsutaan lineaarinen haku , jota joskus kutsutaan nimellä peräkkäinen haku . Se toimii vertaamalla jokaista taulukon jäsentä kohdearvoon löytääkseen a ottelu tai kulkea koko taulukko iteratiivisesti.

algoritmi bfs:lle

Lineaarisen haun perusvaiheet ovat seuraavat:

    alkaa taulukon ylimpien elementtien kanssa.
  1. Tavoitearvoa tulee verrata nykyiseen elementtiin.
  2. Haku onnistuu, jos nykyinen elementti vastaa pyydettyä arvoa, ja sitten algoritmi voi palauttaa elementin indeksin tai minkä tahansa muun halutun lähdön.
  3. Siirry taulukon seuraavaan elementtiin, jos nykyinen elementti ei vastaa haluttua arvoa.
  4. Toista vaiheet 2-4, kunnes saavutetaan osuma tai taulukon loppu.

Ohjelmoida:

 #include int linearSearch(int arr[], int n, int target) { for (int i = 0; i<n; i++) { if (arr[i]="=" target) return i; the index target is found } -1; -1 not int main() arr[]="{5," 2, 8, 12, 3}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="linearSearch(arr," n, target); (result="=" -1) printf('element found
'); else at %d
', result); 0; < pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 2 </pre> <h3>2. Binary Search</h3> <p>The <strong> <em>binary search</em> </strong> technique is utilized to quickly locate a specific element in a sorted <strong> <em>array</em> </strong> or <strong> <em>list</em> </strong> . It uses a <strong> <em>divide-and-conquer</em> </strong> <strong> <em>strategy</em> </strong> , periodically cutting the search area in half until the target element is located or found to be absent.</p> <p>This is how binary search functions:</p> <ol class="points"> <li>Have a sorted array or list as a base.</li> <li>Establish two pointers, <strong> <em>left</em> </strong> and <strong> <em>right</em> </strong> , with their initial values pointing to the array&apos;s first and end members.</li> <li>Use <strong> <em>(left + right) / 2</em> </strong> to get the index of the center element.</li> <li>Compare the target value to the middle element. <ol class="pointsa"> <li>The search is successful if they are equal, and then the program can return the <strong> <em>index</em> </strong> or any other required result.</li> <li>The right pointer should be moved to the element preceding the <strong> <em>middle element</em> </strong> if the middle element is greater than the target value.</li> <li>Move the <strong> <em>left pointer</em> </strong> to the element following the <strong> <em>middle element</em> </strong> if the middle element&apos;s value is less than the target value.</li> </ol></li> <li>Steps <strong> <em>3</em> </strong> and <strong> <em>4</em> </strong> should be repeated until the target element is located or the left pointer exceeds the right pointer.</li> <li>The desired element is not in the array if it cannot be located.</li> </ol> <p> <strong>Program:</strong> </p> <pre> #include int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right-left) 2; if (arr[mid]="=" target) return mid; the index target is found } < left="mid" 1; else right="mid-1;" -1; -1 not main() arr[]="{2," 5, 8, 12, 20, 23, 28}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="binarySearch(arr," 0, - 1, target); (result="=" -1) printf('element found
'); at %d
', result); 0; pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 4 </pre> <hr></=></pre></n;>

2. Binäärihaku

The binäärihaku tekniikkaa käytetään tietyn elementin nopeaan paikallistamiseen lajiteltuna joukko tai lista . Se käyttää a hajota ja hallitse strategia , leikkaamalla hakualueen ajoittain puoliksi, kunnes kohdeelementti löytyy tai sitä ei löydy.

Näin binäärihaku toimii:

  1. Käytä pohjana lajiteltua matriisia tai luetteloa.
  2. Aseta kaksi osoitinta, vasemmalle ja oikein , joiden alkuarvot osoittavat taulukon ensimmäiseen ja loppujäseneen.
  3. Käyttää (vasen + oikea) / 2 saadaksesi keskielementin indeksin.
  4. Vertaa tavoitearvoa keskielementtiin.
    1. Haku onnistuu, jos ne ovat yhtä suuret, ja sitten ohjelma voi palauttaa indeksi tai muu vaadittu tulos.
    2. Oikea osoitin tulee siirtää elementtiä edeltävään elementtiin keskimmäinen elementti jos keskielementti on suurempi kuin tavoitearvo.
    3. Siirrä vasen osoitin seuraavaan elementtiin keskimmäinen elementti jos keskielementin arvo on pienempi kuin tavoitearvo.
  5. Askeleet 3 ja 4 tulee toistaa, kunnes kohdeelementti löytyy tai vasen osoitin ylittää oikean osoittimen.
  6. Haluttu elementti ei ole taulukossa, jos sitä ei löydy.

Ohjelmoida:

 #include int binarySearch(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right-left) 2; if (arr[mid]="=" target) return mid; the index target is found } < left="mid" 1; else right="mid-1;" -1; -1 not main() arr[]="{2," 5, 8, 12, 20, 23, 28}; n="sizeof(arr)" sizeof(arr[0]); calculate number of elements in array result="binarySearch(arr," 0, - 1, target); (result="=" -1) printf(\'element found
\'); at %d
\', result); 0; pre> <p> <strong>Output:</strong> </p> <pre> An element found at index 4 </pre> <hr></=>