logo

C-program for å søke etter et element i en matrise

I denne artikkelen vil vi diskutere C-programmet for å søke etter et element i en Array med deres forskjellige måter og eksempler.

Hva er en Array?

EN data struktur kalt en array har en serie med fast lengde med gjenstander av identisk type. Det brukes ofte til å lagre og manipulere datainnsamlinger fordi indeksering muliggjør effektiv tilgang.

Eks: inntall[] = {10, 20, 30, 40, 50};

Søke etter et element i en matrise

En typisk operasjon i dataprogrammering er å lete etter et bestemt element i en matrise. Effektiviteten til koden din kan bli betraktelig forbedret ved å bruke effektive søkealgoritmer enten du søker etter eksistensen av en bestemt verdi som lokaliserer indeksen til et element, eller verifiserer om et element eksisterer. De mange metodene for å søke etter elementer i en matrise ved hjelp av programmeringsspråket C vil bli diskutert i denne artikkelen.

Det er hovedsakelig to måter å søke etter et element i en matrise:

1. Lineært søk

En enkel søkestrategi som brukes til å finne et gitt element i en matrise eller liste kalles lineært søk , noen ganger referert til som sekvensielt søk . Den fungerer ved å sammenligne hvert matrisemedlem med målverdien for å finne en kamp eller traversere hele arrayen iterativt.

De grunnleggende trinnene i lineært søk er som følger:

    Start med matrisens øverste elementer.
  1. Målverdien skal sammenlignes med gjeldende element.
  2. Søket er vellykket hvis det gjeldende elementet samsvarer med den forespurte verdien, og da kan algoritmen returnere elementets indeks eller en annen ønsket utgang.
  3. Gå til følgende element i matrisen hvis det gjeldende elementet ikke samsvarer med ønsket verdi.
  4. Gjenta trinn 2-4 til en match er laget eller slutten av arrayet nådd.

Program:

 #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ært søk

De binært søk teknikk brukes til raskt å lokalisere et spesifikt element i en sortert array eller liste . Den bruker en splitt og hersk strategi , periodisk kutte søkeområdet i to til målelementet er lokalisert eller funnet å være fraværende.

Slik fungerer binært søk:

  1. Ha en sortert matrise eller liste som base.
  2. Etabler to pekere, venstre og Ikke sant , med startverdiene som peker til arrayens første og sluttmedlemmer.
  3. Bruk (venstre + høyre) / 2 for å få indeksen til midtelementet.
  4. Sammenlign målverdien med det midterste elementet.
    1. Søket er vellykket hvis de er like, og da kan programmet returnere indeks eller andre nødvendige resultater.
    2. Høyre peker skal flyttes til elementet foran midtelement hvis midtelementet er større enn målverdien.
    3. Flytt venstre peker til elementet etter midtelement hvis midtelementets verdi er mindre enn målverdien.
  5. Trinn 3 og 4 bør gjentas til målelementet er lokalisert eller venstre peker overstiger høyre peker.
  6. Det ønskede elementet er ikke i arrayet hvis det ikke kan lokaliseres.

Program:

 #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></=>