Šajā rakstā mēs apspriedīsim C programmu, lai meklētu elementu masīvā ar dažādiem veidiem un piemēriem.
Kas ir masīvs?
A datu struktūra sauc an masīvs glabā fiksēta garuma identiska tipa priekšmetu sēriju. To bieži izmanto, lai uzglabātu un apstrādātu datu kolekcijas, jo indeksēšana nodrošina efektīvu piekļuvi.
bloķēt reklāmas youtube android
Piemēram: intnumbers[] = {10, 20, 30, 40, 50};
Elementa meklēšana masīvā
Tipiska datorprogrammēšanas darbība ir noteikta elementa meklēšana masīvā. Koda efektivitāti var ievērojami uzlabot, izmantojot efektīvus meklēšanas algoritmus neatkarīgi no tā, vai meklējat noteiktas vērtības esamību, kas nosaka elementa indeksu, vai pārbauda, vai elements pastāv. Šajā rakstā tiks aplūkotas daudzas metodes elementu meklēšanai masīvā, izmantojot C programmēšanas valodu.
Galvenokārt ir divi veidi, kā meklēt elementu masīvā:
1. Lineārā meklēšana
Tiek izsaukta vienkārša meklēšanas stratēģija, ko izmanto, lai atrastu noteiktu elementu masīvā vai sarakstā lineārā meklēšana , ko dažkārt dēvē par secīga meklēšana . Tas darbojas, salīdzinot katru masīva dalībnieku ar mērķa vērtību, lai atrastu a atbilst vai šķērsot visu masīvu iteratīvi.
attēlu izlīdzināšana css
Lineārās meklēšanas pamatdarbības ir šādas:
- Mērķa vērtība ir jāsalīdzina ar pašreizējo elementu.
- Meklēšana ir veiksmīga, ja pašreizējais elements atbilst pieprasītajai vērtībai, un tad algoritms var atgriezt elementa indeksu vai jebkuru citu vēlamo izvadi.
- Pārejiet uz nākamo masīva elementu, ja pašreizējais elements neatbilst vēlamajai vērtībai.
- Kamēr nav panākta atbilstība vai ir sasniegts masīva beigas, atkārtojiet 2.–4. darbību.
Programma:
#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ā meklēšana
The binārā meklēšana tehnika tiek izmantota, lai ātri atrastu konkrētu elementu sakārtotajā masīvs vai sarakstu . Tas izmanto a sadali un valdi stratēģija , periodiski pārgriežot meklēšanas apgabalu uz pusēm, līdz tiek atrasts mērķa elements vai konstatēts, ka tā nav.
Binārā meklēšana darbojas šādi:
- Kā bāzi izmantojiet sakārtotu masīvu vai sarakstu.
- Izveidojiet divus rādītājus, pa kreisi un pa labi , kuru sākotnējās vērtības norāda uz masīva pirmo un beigu dalībnieku.
- Izmantot (pa kreisi + pa labi) / 2 lai iegūtu centra elementa indeksu.
- Salīdziniet mērķa vērtību ar vidējo elementu.
- Meklēšana ir veiksmīga, ja tie ir vienādi, un tad programma var atgriezt rādītājs vai kāds cits nepieciešamais rezultāts.
- Labais rādītājs ir jāpārvieto uz elementu pirms vidējais elements ja vidējais elements ir lielāks par mērķa vērtību.
- Pārvietojiet kreisais rādītājs uz elementu, kas seko vidējais elements ja vidējā elementa vērtība ir mazāka par mērķa vērtību.
- Soļi 3 un 4 jāatkārto, līdz tiek atrasts mērķa elements vai kreisais rādītājs pārsniedz labo rādītāju.
- Vēlamais elements nav masīvā, ja to nevar atrast.
Programma:
#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></=>
=>