logo

Program C pentru a căuta un element într-o matrice

În acest articol, vom discuta despre programul C pentru a căuta un element într-un Array cu diferitele modalități și exemple ale acestora.

Ce este un Array?

A structură de date numit un matrice deține o serie de articole de tip identic cu lungime fixă. Este frecvent utilizat pentru stocarea și manipularea colecțiilor de date, deoarece indexarea permite accesul eficient.

python sort tuple

Ex: intnumerele[] = {10, 20, 30, 40, 50};

Căutarea unui element într-o matrice

O operație tipică în programarea computerelor este căutarea unui anumit element într-o matrice. Eficiența codului dvs. poate fi mult îmbunătățită prin utilizarea algoritmilor de căutare eficienți, indiferent dacă căutați existența unei anumite valori care localizează indexul unui element sau verificați dacă există un element. Multe metode de căutare a elementelor dintr-o matrice folosind limbajul de programare C vor fi discutate în acest articol.

Există în principal două moduri de a căuta un element într-o matrice:

negație discretă de matematică

1. Căutare liniară

Este apelată o strategie simplă de căutare utilizată pentru a localiza un anumit element într-o matrice sau listă căutare liniară , denumit uneori ca căutare secvențială . Funcționează prin compararea fiecărui membru al matricei cu valoarea țintă pentru a găsi a Meci sau traversa matricea completă în mod iterativ.

Etapele fundamentale în căutarea liniară sunt următoarele:

    start cu elementele cele mai de sus ale matricei.
  1. Valoarea țintă trebuie comparată cu elementul curent.
  2. Căutarea are succes dacă elementul curent se potrivește cu valoarea cerută, iar apoi algoritmul poate returna indexul elementului sau orice altă ieșire dorită.
  3. Mergeți la următorul element din matrice dacă elementul curent nu se potrivește cu valoarea dorită.
  4. Până când se realizează o potrivire sau se ajunge la sfârșitul matricei, repetați pașii 2-4.

Program:

coada de prioritate java
 #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. Căutare binară

The căutare binară tehnica este utilizată pentru a localiza rapid un anumit element într-un sortat matrice sau listă . Folosește a diviza și cuceri strategie , tăind periodic zona de căutare în jumătate până când elementul țintă este localizat sau găsit a fi absent.

Iată cum funcționează căutarea binară:

  1. Aveți o matrice sau o listă sortată ca bază.
  2. Stabiliți două indicații, stânga și dreapta , cu valorile lor inițiale îndreptate către membrii primii și terminali ai matricei.
  3. Utilizare (stânga + dreapta) / 2 pentru a obține indicele elementului central.
  4. Comparați valoarea țintă cu elementul din mijloc.
    1. Căutarea are succes dacă sunt egale, iar apoi programul poate returna index sau orice alt rezultat necesar.
    2. Indicatorul din dreapta trebuie mutat la elementul care precede element de mijloc dacă elementul din mijloc este mai mare decât valoarea țintă.
    3. Mută indicatorul din stânga la elementul care urmează element de mijloc dacă valoarea elementului din mijloc este mai mică decât valoarea țintă.
  5. Pași 3 și 4 trebuie repetat până când elementul țintă este localizat sau indicatorul din stânga îl depășește pe indicatorul din dreapta.
  6. Elementul dorit nu se află în matrice dacă nu poate fi localizat.

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