logo

Program w języku C do wyszukiwania elementu w tablicy

W tym artykule omówimy program C służący do wyszukiwania elementu w tablicy za pomocą różnych sposobów i przykładów.

Co to jest tablica?

A struktura danych zwany szyk zawiera serię elementów identycznego typu o stałej długości. Jest często używany do przechowywania zbiorów danych i manipulowania nimi, ponieważ indeksowanie umożliwia efektywny dostęp.

Np.: liczby całkowite[] = {10, 20, 30, 40, 50};

vba

Wyszukiwanie elementu w tablicy

Typowa operacja w programowaniu komputerowym polega na szukaniu określonego elementu w tablicy. Wydajność Twojego kodu można znacznie poprawić, stosując wydajne algorytmy wyszukiwania, niezależnie od tego, czy szukasz istnienia określonej wartości, lokalizując indeks elementu, czy też sprawdzasz, czy element istnieje. W tym artykule omówimy wiele metod wyszukiwania elementów tablicy przy użyciu języka programowania C.

Istnieją głównie dwa sposoby wyszukiwania elementu w tablicy:

odwracanie ciągu Java

1. Wyszukiwanie liniowe

Nazywa się prostą strategią wyszukiwania używaną do zlokalizowania danego elementu w tablicy lub liście wyszukiwanie liniowe , czasami tzw wyszukiwanie sekwencyjne . Działa poprzez porównanie każdego elementu tablicy z wartością docelową w celu znalezienia a mecz Lub trawers pełną tablicę iteracyjnie.

Podstawowe etapy wyszukiwania liniowego są następujące:

co to komputer
    Początek z najwyższymi elementami tablicy.
  1. Wartość docelową należy porównać z bieżącym elementem.
  2. Wyszukiwanie zakończyło się sukcesem, jeśli bieżący element odpowiada żądanej wartości, a następnie algorytm może zwrócić indeks elementu lub inny żądany wynik.
  3. Przejdź do następnego elementu w tablicy, jeśli bieżący element nie pasuje do żądanej wartości.
  4. Do momentu dopasowania lub osiągnięcia końca tablicy powtarzaj kroki 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. Wyszukiwanie binarne

The wyszukiwanie binarne Technika ta służy do szybkiego zlokalizowania określonego elementu w sortowaniu szyk Lub lista . Używa A dziel i rządź strategia , okresowo przecinając obszar poszukiwań na pół, aż do momentu zlokalizowania lub stwierdzenia braku elementu docelowego.

Tak działa wyszukiwanie binarne:

  1. Jako podstawę należy mieć posortowaną tablicę lub listę.
  2. Ustal dwa wskaźniki, lewy I Prawidłowy , których wartości początkowe wskazują pierwszy i końcowy element tablicy.
  3. Używać (lewy + prawy) / 2 aby uzyskać indeks środkowego elementu.
  4. Porównaj wartość docelową ze środkowym elementem.
    1. Wyszukiwanie zakończyło się sukcesem, jeśli są one równe, a następnie program może zwrócić indeks lub inny wymagany wynik.
    2. Prawy wskaźnik należy przesunąć na element poprzedzający element środkowy jeśli środkowy element jest większy niż wartość docelowa.
    3. Przesuń lewy wskaźnik do elementu następującego po element środkowy jeśli wartość środkowego elementu jest mniejsza niż wartość docelowa.
  5. Kroki 3 I 4 należy powtarzać do momentu zlokalizowania elementu docelowego lub lewego wskaźnika przekroczenia prawego.
  6. Żądanego elementu nie ma w tablicy, jeśli nie można go zlokalizować.

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