I denne artikel vil vi diskutere C-programmet til at søge efter et element i en Array med deres forskellige måder og eksempler.
Hvad er et array?
EN datastruktur kaldet en array rummer en serie af identiske genstande af fast længde. Det bruges ofte til at gemme og manipulere datasamlinger, fordi indeksering muliggør effektiv adgang.
Eks: intnumbers[] = {10, 20, 30, 40, 50};
Søgning efter et element i et array
En typisk operation i computerprogrammering er at lede efter et bestemt element i et array. Effektiviteten af din kode kan blive væsentligt forbedret ved at bruge effektive søgealgoritmer, uanset om du søger efter eksistensen af en bestemt værdi, der lokaliserer et elements indeks, eller verificerer, om et element eksisterer. De mange metoder til at søge efter elementer i et array ved hjælp af programmeringssproget C vil blive diskuteret i denne artikel.
Der er hovedsageligt to måder at søge efter et element i en matrix:
1. Lineær søgning
En ligetil søgestrategi, der bruges til at lokalisere et givet element i en matrix eller liste, kaldes lineær søgning , nogle gange omtalt som sekventiel søgning . Den fungerer ved at sammenligne hvert array-medlem med målværdien for at finde en match eller krydse det fulde array iterativt.
De grundlæggende trin i lineær søgning er som følger:
- Målværdien skal sammenlignes med det aktuelle element.
- Søgningen er vellykket, hvis det aktuelle element matcher den ønskede værdi, og derefter kan algoritmen returnere elementets indeks eller ethvert andet ønsket output.
- Gå til det følgende element i arrayet, hvis det aktuelle element ikke matcher den ønskede værdi.
- Gentag trin 2-4, indtil et match er lavet, eller slutningen af arrayet er nået.
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'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ær søgning
Det binær søgning teknik bruges til hurtigt at lokalisere et specifikt element i en sorteret array eller liste . Den bruger en del-og-hersk strategi , periodisk at skære søgeområdet i halve, indtil målelementet er lokaliseret eller fundet at være fraværende.
Sådan fungerer binær søgning:
- Hav en sorteret matrix eller liste som base.
- Opret to pointer, venstre og højre , med deres begyndelsesværdier, der peger på arrayets første og slutmedlemmer.
- Brug (venstre + højre) / 2 for at få indekset for midterelementet.
- Sammenlign målværdien med det midterste element.
- Søgningen er vellykket, hvis de er ens, og så kan programmet returnere indeks eller ethvert andet påkrævet resultat.
- Den højre markør skal flyttes til elementet før midterste element hvis det midterste element er større end målværdien.
- Flyt venstre markør til elementet efter midterste element hvis det midterste elements værdi er mindre end målværdien.
- Trin 3 og 4 skal gentages, indtil målelementet er lokaliseret, eller den venstre markør overstiger den højre.
- Det ønskede element er ikke i arrayet, hvis det ikke kan findes.
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></=>
=>