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é:
- Cieľová hodnota by sa mala porovnať s aktuálnym prvkom.
- 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.
- Ak aktuálny prvok nezodpovedá požadovanej hodnote, prejdite na nasledujúci prvok v poli.
- 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'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'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:
- Majte ako základ zoradené pole alebo zoznam.
- Stanovte si dva ukazovatele, vľavo a správny , pričom ich počiatočné hodnoty ukazujú na prvý a koncový člen poľa.
- Použite (vľavo + vpravo) / 2 získať index stredového prvku.
- Porovnajte cieľovú hodnotu so stredným prvkom.
- 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.
- Pravý ukazovateľ by sa mal presunúť na prvok predchádzajúci stredný prvok ak je stredný prvok väčší ako cieľová hodnota.
- Presuňte ľavý ukazovateľ k prvku nasledujúcemu po stredný prvok ak je hodnota stredného prvku menšia ako cieľová hodnota.
- Kroky 3 a 4 by sa malo opakovať, kým nenájdete cieľový prvok alebo kým ľavý ukazovateľ nepresiahne pravý ukazovateľ.
- 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></=>
=>