logo

C program na vyhľadávanie prvku v poli

V tomto článku budeme diskutovať o programe C na vyhľadávanie prvku v poli s rôznymi spôsobmi a príkladmi.

Čo je pole?

A dátová štruktúra volal an pole obsahuje sériu položiek rovnakého typu s pevnou dĺžkou. Často sa používa na ukladanie a manipuláciu s kolekciami údajov, pretože indexovanie umožňuje efektívny prístup.

veľkosť môjho monitora

Príklad: intnumbers[] = {10, 20, 30, 40, 50};

Vyhľadávanie prvku v poli

Typická operácia v počítačovom programovaní je hľadanie konkrétneho prvku v poli. Efektívnosť vášho kódu môže byť výrazne zlepšená použitím efektívnych vyhľadávacích algoritmov, či už hľadáte existenciu určitej hodnoty umiestnením indexu prvku, alebo overením, či prvok existuje. O mnohých metódach vyhľadávania prvkov v poli pomocou programovacieho jazyka C sa bude diskutovať v tomto článku.

Existujú hlavne dva spôsoby vyhľadávania prvku v poli:

javac nie je rozpoznaný

1. Lineárne vyhľadávanie

Nazýva sa priama stratégia vyhľadávania, ktorá sa používa na nájdenie daného prvku v poli alebo zozname lineárne vyhľadávanie , niekedy označovaný ako sekvenčné vyhľadávanie . Funguje tak, že porovnáva každý člen poľa s cieľovou hodnotou a nájde a zápas alebo traverzovať celé pole iteratívne.

Základné kroky pri lineárnom vyhľadávaní sú nasledovné:

    Štart s najvyššími prvkami poľa.
  1. Cieľová hodnota by sa mala porovnať s aktuálnym prvkom.
  2. Vyhľadávanie je úspešné, ak sa aktuálny prvok zhoduje s požadovanou hodnotou, a potom môže algoritmus vrátiť index prvku alebo akýkoľvek iný požadovaný výstup.
  3. Ak aktuálny prvok nezodpovedá požadovanej hodnote, prejdite na nasledujúci prvok v poli.
  4. Kým sa nedosiahne zhoda alebo sa nedosiahne koniec poľa, opakujte kroky 2-4.

Program:

pole reťazcov c
 #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árne vyhľadávanie

The binárne vyhľadávanie Táto technika sa používa na rýchle vyhľadanie konkrétneho prvku v triedení pole alebo zoznam . Používa a rozdeľ a panuj stratégie periodicky redukuje oblasť vyhľadávania na polovicu, kým sa cieľový prvok nenájde alebo sa nezistí, že chýba.

Takto funguje binárne vyhľadávanie:

  1. Majte ako základ zoradené pole alebo zoznam.
  2. Stanovte si dva ukazovatele, vľavo a správny , pričom ich počiatočné hodnoty ukazujú na prvý a koncový člen poľa.
  3. Použite (vľavo + vpravo) / 2 získať index stredového prvku.
  4. Porovnajte cieľovú hodnotu so stredným prvkom.
    1. Vyhľadávanie je úspešné, ak sú rovnaké, a potom program môže vrátiť index alebo akýkoľvek iný požadovaný výsledok.
    2. Pravý ukazovateľ by sa mal presunúť na prvok predchádzajúci stredný prvok ak je stredný prvok väčší ako cieľová hodnota.
    3. Presuňte ľavý ukazovateľ k prvku nasledujúcemu po stredný prvok ak je hodnota stredného prvku menšia ako cieľová hodnota.
  5. Kroky 3 a 4 by sa malo opakovať, kým nenájdete cieľový prvok alebo kým ľavý ukazovateľ nepresiahne pravý ukazovateľ.
  6. Požadovaný prvok nie je v poli, ak ho nemožno nájsť.

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