logo

C program za pretraživanje elementa u nizu

U ovom ćemo članku raspravljati o C programu za traženje elementa u polju s njihovim različitim načinima i primjerima.

Što je niz?

A struktura podataka zove an niz sadrži niz stavki identičnog tipa fiksne duljine. Često se koristi za pohranjivanje i rukovanje zbirkama podataka jer indeksiranje omogućuje učinkovit pristup.

deinstaliraj kutni cli

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

Pretraživanje elementa u nizu

Tipična operacija u računalnom programiranju je traženje određenog elementa u nizu. Učinkovitost vašeg koda može se znatno poboljšati korištenjem učinkovitih algoritama pretraživanja bilo da tražite postojanje određene vrijednosti locirajući indeks elementa ili provjeravate postoji li element. U ovom će se članku raspravljati o mnogim metodama traženja elemenata u nizu pomoću programskog jezika C.

Postoje uglavnom dva načina za pretraživanje elementa u nizu:

1. Linearno pretraživanje

Poziva se izravna strategija pretraživanja koja se koristi za lociranje danog elementa u nizu ili popisu linearno pretraživanje , ponekad se naziva sekvencijalno pretraživanje . Djeluje tako da svaki član niza uspoređuje s ciljnom vrijednošću kako bi pronašao a odgovarati ili prijeći cijeli niz iterativno.

pseudokod java

Osnovni koraci u linearnom pretraživanju su sljedeći:

    Početak s najvišim elementima niza.
  1. Ciljnu vrijednost treba usporediti s trenutnim elementom.
  2. Pretraga je uspješna ako trenutni element odgovara traženoj vrijednosti, a zatim algoritam može vratiti indeks elementa ili bilo koji drugi željeni izlaz.
  3. Idite na sljedeći element u nizu ako trenutni element ne odgovara željenoj vrijednosti.
  4. Dok se ne pronađe podudaranje ili dok se ne dosegne kraj niza, ponavljajte korake 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. Binarno pretraživanje

The binarno pretraživanje tehnika se koristi za brzo lociranje određenog elementa u sortiranom niz ili popis . Koristi a zavadi-pa-vladaj strategija , povremeno režući područje pretraživanja na pola sve dok se ciljni element ne pronađe ili utvrdi da ga nema.

Ovako funkcionira binarno pretraživanje:

  1. Imajte sortirani niz ili popis kao bazu.
  2. Uspostavite dva pokazivača, lijevo i pravo , s njihovim početnim vrijednostima koje pokazuju na prve i krajnje članove niza.
  3. Koristiti (lijevo + desno) / 2 da biste dobili indeks središnjeg elementa.
  4. Usporedite ciljnu vrijednost sa srednjim elementom.
    1. Pretraga je uspješna ako su jednaki, a zatim program može vratiti indeks ili bilo koji drugi traženi rezultat.
    2. Desni pokazivač treba pomaknuti na element koji prethodi srednji element ako je srednji element veći od ciljane vrijednosti.
    3. Pomakni lijevi pokazivač na element koji slijedi srednji element ako je vrijednost srednjeg elementa manja od ciljne vrijednosti.
  5. Koraci 3 i 4 treba ponavljati dok se ciljni element ne locira ili dok lijevi pokazivač ne pređe desni pokazivač.
  6. Željeni element nije u nizu ako se ne može locirati.

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