logo

C program pro vyhledávání prvku v poli

V tomto článku budeme diskutovat o programu C pro hledání prvku v poli s jejich různými způsoby a příklady.

Co je pole?

A datová struktura volal an pole obsahuje řadu položek stejného typu s pevnou délkou. Často se používá k ukládání a manipulaci s datovými kolekcemi, protože indexování umožňuje efektivní přístup.

java int do char

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

Hledání prvku v poli

Typickou operací v počítačovém programování je hledání určitého prvku v poli. Efektivitu vašeho kódu lze výrazně zlepšit použitím účinných vyhledávacích algoritmů, ať už hledáte existenci určité hodnoty při hledání indexu prvku, nebo ověřujete, zda prvek existuje. Mnoho metod pro vyhledávání prvků v poli pomocí programovacího jazyka C bude probráno v tomto článku.

Existují hlavně dva způsoby, jak hledat prvek v poli:

1. Lineární vyhledávání

Je volána přímočará vyhledávací strategie používaná k nalezení daného prvku v poli nebo seznamu lineární vyhledávání , někdy označované jako sekvenční vyhledávání . Funguje tak, že porovnává každý člen pole s cílovou hodnotou a najde a zápas nebo přejít celé pole iterativně.

Základní kroky v lineárním vyhledávání jsou následující:

    Start s nejvyššími prvky pole.
  1. Cílová hodnota by měla být porovnána s aktuálním prvkem.
  2. Vyhledávání je úspěšné, pokud aktuální prvek odpovídá požadované hodnotě, a poté může algoritmus vrátit index prvku nebo jakýkoli jiný požadovaný výstup.
  3. Pokud aktuální prvek neodpovídá požadované hodnotě, přejděte na následující prvek v poli.
  4. Dokud nedojde ke shodě nebo ke konci pole, opakujte kroky 2-4.

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ární vyhledávání

The binární vyhledávání Tato technika se používá k rychlému vyhledání určitého prvku v seřazeném pole nebo seznam . Používá a rozděl a panuj strategie , periodicky ořezává oblast hledání na polovinu, dokud není cílový prvek lokalizován nebo shledán nepřítomným.

Takto funguje binární vyhledávání:

  1. Mějte jako základ seřazené pole nebo seznam.
  2. Stanovte dva ukazatele, vlevo, odjet a že jo , přičemž jejich počáteční hodnoty ukazují na první a koncový člen pole.
  3. Použití (vlevo + vpravo) / 2 získat index středového prvku.
  4. Porovnejte cílovou hodnotu se středním prvkem.
    1. Hledání je úspěšné, pokud jsou stejné, a program může vrátit index nebo jakýkoli jiný požadovaný výsledek.
    2. Pravý ukazatel by se měl přesunout na prvek předcházející střední prvek pokud je prostřední prvek větší než cílová hodnota.
    3. Přesuňte levý ukazatel k prvku, který následuje za střední prvek pokud je hodnota prostředního prvku menší než cílová hodnota.
  5. Kroky 3 a 4 by se mělo opakovat, dokud není umístěn cílový prvek nebo dokud levý ukazatel nepřekročí pravý ukazatel.
  6. Požadovaný prvek není v poli, pokud jej nelze najít.

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