logo

C-Programm zum Suchen eines Elements in einem Array

In diesem Artikel besprechen wir das C-Programm zum Suchen nach einem Element in einem Array mit seinen verschiedenen Methoden und Beispielen.

Was ist ein Array?

A Datenstruktur genannt ein Array enthält eine Reihe identischer Elemente mit fester Länge. Es wird häufig zum Speichern und Bearbeiten von Datensammlungen verwendet, da die Indizierung einen effizienten Zugriff ermöglicht.

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

Suchen nach einem Element in einem Array

Eine typische Operation in der Computerprogrammierung ist die Suche nach einem bestimmten Element in einem Array. Die Effizienz Ihres Codes kann durch die Verwendung effizienter Suchalgorithmen erheblich verbessert werden, unabhängig davon, ob Sie nach der Existenz eines bestimmten Werts suchen, den Index eines Elements lokalisieren oder überprüfen, ob ein Element vorhanden ist. In diesem Artikel werden die vielen Methoden zum Suchen nach Elementen in einem Array mithilfe der Programmiersprache C erläutert.

Es gibt hauptsächlich zwei Möglichkeiten, ein Element in einem Array zu durchsuchen:

1. Lineare Suche

Eine einfache Suchstrategie zum Auffinden eines bestimmten Elements in einem Array oder einer Liste wird aufgerufen lineare Suche , manchmal auch als bezeichnet Sequentielle Suche . Dabei wird jedes Array-Mitglied mit dem Zielwert verglichen, um a zu finden übereinstimmen oder Traverse das gesamte Array iterativ.

Die grundlegenden Schritte bei der linearen Suche sind wie folgt:

    Start mit den obersten Elementen des Arrays.
  1. Der Zielwert sollte mit dem aktuellen Element verglichen werden.
  2. Die Suche ist erfolgreich, wenn das aktuelle Element mit dem angeforderten Wert übereinstimmt, und der Algorithmus kann dann den Index des Elements oder eine andere gewünschte Ausgabe zurückgeben.
  3. Gehen Sie zum folgenden Element im Array, wenn das aktuelle Element nicht mit dem gewünschten Wert übereinstimmt.
  4. Wiederholen Sie die Schritte 2–4, bis eine Übereinstimmung vorliegt oder das Ende des Arrays erreicht ist.

Programm:

 #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äre Suche

Der binäre Suche Die Technik wird verwendet, um ein bestimmtes Element in einer Sortierung schnell zu finden Array oder Liste . Es verwendet a Teile und herrsche Strategie , wobei der Suchbereich regelmäßig halbiert wird, bis das Zielelement gefunden wird oder als nicht vorhanden befunden wird.

So funktioniert die binäre Suche:

  1. Verwenden Sie ein sortiertes Array oder eine sortierte Liste als Basis.
  2. Legen Sie zwei Zeiger fest, links Und Rechts , wobei ihre Anfangswerte auf das erste und das letzte Mitglied des Arrays verweisen.
  3. Verwenden (links + rechts) / 2 um den Index des Mittelelements zu erhalten.
  4. Vergleichen Sie den Zielwert mit dem mittleren Element.
    1. Die Suche ist erfolgreich, wenn sie gleich sind, und dann kann das Programm Folgendes zurückgeben Index oder ein anderes erforderliches Ergebnis.
    2. Der rechte Zeiger sollte auf das Element vor dem verschoben werden mittleres Element wenn das mittlere Element größer als der Zielwert ist.
    3. Beweg das linker Zeiger zum Element, das dem folgt mittleres Element wenn der Wert des mittleren Elements kleiner als der Zielwert ist.
  5. Schritte 3 Und 4 sollte wiederholt werden, bis das Zielelement gefunden wird oder der linke Zeiger den rechten Zeiger überschreitet.
  6. Das gewünschte Element befindet sich nicht im Array, wenn es nicht gefunden werden kann.

Programm:

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