logo

Programa C per cercar un element en una matriu

En aquest article, parlarem del programa C per cercar un element en una matriu amb les seves diferents maneres i exemples.

Què és un Array?

A estructura de dades anomenat an matriu conté una sèrie de longitud fixa d'articles de tipus idèntic. S'utilitza amb freqüència per emmagatzemar i manipular col·leccions de dades perquè la indexació permet un accés eficient.

dreceres de teclat de Linux

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

Cerca d'un element en una matriu

Una operació típica en programació d'ordinadors és buscar un element determinat en una matriu. L'eficiència del vostre codi es pot millorar molt mitjançant l'ús d'algorismes de cerca eficients, tant si cerqueu l'existència d'un determinat valor localitzant l'índex d'un element com si comproveu si existeix un element. En aquest article es parlaran dels molts mètodes per cercar elements en una matriu mitjançant el llenguatge de programació C.

Hi ha principalment dues maneres de cercar un element en una matriu:

1. Cerca lineal

S'anomena una estratègia de cerca senzilla que s'utilitza per localitzar un element determinat en una matriu o llista cerca lineal , de vegades denominat cerca seqüencial . Funciona comparant cada membre de la matriu amb el valor objectiu per trobar a partit o travessa la matriu completa de manera iterativa.

flotar a la corda

Els passos fonamentals de la cerca lineal són els següents:

    Començar amb els elements superiors de la matriu.
  1. El valor objectiu s'ha de comparar amb l'element actual.
  2. La cerca té èxit si l'element actual coincideix amb el valor sol·licitat i, aleshores, l'algorisme pot retornar l'índex de l'element o qualsevol altra sortida desitjada.
  3. Aneu a l'element següent de la matriu si l'element actual no coincideix amb el valor desitjat.
  4. Fins que no es faci una coincidència o s'arribi al final de la matriu, repetiu els passos 2-4.

Programa:

 #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. Cerca binària

El cerca binària La tècnica s'utilitza per localitzar ràpidament un element específic en una ordenació matriu o llista . Utilitza a divideix i conquereix estratègia , tallant periòdicament l'àrea de cerca per la meitat fins que l'element objectiu es localitzi o es trobi absent.

Així és com funciona la cerca binària:

  1. Tenir una matriu o llista ordenada com a base.
  2. Establiu dues indicacions, esquerra i dret , amb els seus valors inicials apuntant als membres primer i final de la matriu.
  3. Ús (esquerra + dreta) / 2 per obtenir l'índex de l'element central.
  4. Compareu el valor objectiu amb l'element central.
    1. La cerca té èxit si són iguals, i aleshores el programa pot retornar el índex o qualsevol altre resultat requerit.
    2. El punter dret s'ha de moure a l'element que precedeix element mitjà si l'element central és més gran que el valor objectiu.
    3. Mou el punter esquerre a l'element següent al element mitjà si el valor de l'element central és inferior al valor objectiu.
  5. Passos 3 i 4 s'ha de repetir fins que es localitzi l'element objectiu o el punter esquerre superi el punter dret.
  6. L'element desitjat no es troba a la matriu si no es pot localitzar.

Programa:

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