logo

C-program för att söka efter ett element i en array

I den här artikeln kommer vi att diskutera C-programmet för att söka efter ett element i en Array med deras olika sätt och exempel.

powershell kommentar multiline

Vad är en Array?

A datastruktur kallas en array rymmer en serie med fast längd av föremål av samma typ. Det används ofta för att lagra och manipulera datainsamlingar eftersom indexering möjliggör effektiv åtkomst.

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

Söka efter ett element i en array

En typisk operation i datorprogrammering är att leta efter ett visst element i en array. Effektiviteten av din kod kan förbättras avsevärt genom att använda effektiva sökalgoritmer oavsett om du söker efter existensen av ett visst värde som lokaliserar indexet för ett element, eller verifierar om ett element existerar. De många metoderna för att söka efter element i en array med programmeringsspråket C kommer att diskuteras i den här artikeln.

Det finns huvudsakligen två sätt att söka efter ett element i en array:

1. Linjär sökning

En enkel sökstrategi som används för att lokalisera ett givet element i en array eller lista anropas linjär sökning , ibland kallad sekventiell sökning . Den fungerar genom att jämföra varje arraymedlem med målvärdet för att hitta a match eller korsa hela arrayen iterativt.

De grundläggande stegen i linjär sökning är följande:

    Start med arrayens översta element.
  1. Målvärdet ska jämföras med det aktuella elementet.
  2. Sökningen lyckas om det aktuella elementet matchar det begärda värdet, och då kan algoritmen returnera elementets index eller någon annan önskad utdata.
  3. Gå till följande element i arrayen om det aktuella elementet inte matchar det önskade värdet.
  4. Upprepa steg 2-4 tills en matchning görs eller slutet av arrayen nås.

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är sökning

De binär sökning teknik används för att snabbt lokalisera ett specifikt element i en sorterad array eller lista . Den använder en söndra och erövra strategi , periodiskt skära av sökområdet på mitten tills målelementet är lokaliserat eller befunnits vara frånvarande.

Så här fungerar binär sökning:

  1. Ha en sorterad array eller lista som bas.
  2. Sätt upp två tips, vänster och höger , med deras initiala värden som pekar mot arrayens första och slutmedlemmar.
  3. Använda sig av (vänster + höger) / 2 för att få indexet för mittelementet.
  4. Jämför målvärdet med mittelementet.
    1. Sökningen är framgångsrik om de är lika, och sedan kan programmet returnera index eller något annat önskat resultat.
    2. Den högra pekaren ska flyttas till elementet före mittelement om mittelementet är större än målvärdet.
    3. Flytta vänster pekare till elementet efter mittelement om mittelementets värde är mindre än målvärdet.
  5. Steg 3 och 4 bör upprepas tills målelementet är lokaliserat eller den vänstra pekaren överstiger den högra pekaren.
  6. Det önskade elementet finns inte i arrayen om det inte kan lokaliseras.

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