Šiame straipsnyje aptarsime C programą, skirtą elemento paieškai masyve su skirtingais būdais ir pavyzdžiais.
Kas yra masyvas?
A duomenų struktūra vadinamas an masyvas talpina fiksuoto ilgio identiško tipo daiktų serijas. Jis dažnai naudojamas duomenų rinkiniams saugoti ir manipuliuoti, nes indeksavimas leidžia efektyviai pasiekti.
Pvz.: tarpiniai skaičiai[] = {10, 20, 30, 40, 50};
vba
Elemento paieška masyve
Įprasta kompiuterių programavimo operacija ieško tam tikro elemento masyve. Jūsų kodo efektyvumas gali būti labai pagerintas naudojant efektyvius paieškos algoritmus, nesvarbu, ar ieškote tam tikros reikšmės, nustatančios elemento indeksą, ar tikrinate, ar elementas egzistuoja. Šiame straipsnyje bus aptarta daugybė elementų paieškos masyve metodų naudojant C programavimo kalbą.
Iš esmės yra du būdai, kaip ieškoti elemento masyve:
1. Linijinė paieška
Iškviečiama paprasta paieškos strategija, naudojama tam tikram elementui rasti masyve arba sąraše linijinė paieška , kartais vadinamas nuosekli paieška . Jis veikia lygindamas kiekvieną masyvo narį su tiksline reikšme, kad surastų a rungtynės arba skersai visą masyvą iteratyviai.
Pagrindiniai tiesinės paieškos žingsniai yra šie:
- Tikslinė vertė turėtų būti lyginama su esamu elementu.
- Paieška sėkminga, jei dabartinis elementas atitinka prašomą reikšmę, tada algoritmas gali grąžinti elemento indeksą arba bet kurią kitą norimą išvestį.
- Eikite į kitą masyvo elementą, jei dabartinis elementas neatitinka norimos reikšmės.
- Kol nebus pasiektas atitikmuo arba pasieksite masyvo pabaigą, kartokite 2–4 veiksmus.
Programa:
#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. Dvejetainė paieška
The dvejetainė paieška technika naudojama norint greitai surasti konkretų elementą rūšiuotoje masyvas arba sąrašą . Jis naudoja a skaldyk ir valdyk strategija , periodiškai perpjaunant paieškos sritį per pusę, kol bus nustatytas tikslinis elementas arba jo nėra.
Štai kaip veikia dvejetainė paieška:
- Turėkite surūšiuotą masyvą arba sąrašą kaip pagrindą.
- Nustatyti du rodiklius, paliko ir teisingai , kurių pradinės reikšmės nurodo pirmąjį ir galutinį masyvo narius.
- Naudokite (kairė + dešinė) / 2 gauti centrinio elemento indeksą.
- Palyginkite tikslinę vertę su viduriniu elementu.
- Paieška bus sėkminga, jei jie yra vienodi, ir tada programa gali grąžinti indeksas ar bet koks kitas reikalingas rezultatas.
- Dešinysis žymeklis turi būti perkeltas į elementą, esantį prieš vidurinis elementas jei vidurinis elementas yra didesnis už tikslinę reikšmę.
- Perkelkite kairysis žymeklis į elementą po vidurinis elementas jei vidurinio elemento reikšmė mažesnė už tikslinę vertę.
- Žingsniai 3 ir 4 turi būti kartojamas tol, kol bus nustatytas tikslinis elementas arba kairė rodyklė viršys dešinę.
- Norimo elemento nėra masyve, jei jo negalima rasti.
Programa:
#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></=>
=>