logo

Програма на C для пошуку елемента в масиві

У цій статті ми обговоримо програму C для пошуку елемента в масиві з різними способами та прикладами.

Що таке масив?

А структура даних називається an масив містить серію елементів однакового типу фіксованої довжини. Він часто використовується для зберігання та обробки колекцій даних, оскільки індексація забезпечує ефективний доступ.

Наприклад: intnumbers[] = {10, 20, 30, 40, 50};

Пошук елемента в масиві

Типовою операцією в комп’ютерному програмуванні є пошук певного елемента в масиві. Ефективність вашого коду можна значно підвищити за допомогою ефективних алгоритмів пошуку, незалежно від того, чи шукаєте ви існування певного значення, що визначає індекс елемента, чи перевіряєте, чи існує елемент. У цій статті будуть розглянуті численні методи пошуку елементів у масиві за допомогою мови програмування C.

В основному існує два способи пошуку елемента в масиві:

1. Лінійний пошук

Викликається проста стратегія пошуку, яка використовується для пошуку певного елемента в масиві чи списку лінійний пошук , іноді називають послідовний пошук . Він працює шляхом порівняння кожного члена масиву з цільовим значенням, щоб знайти a матч або траверс повний масив ітеративно.

Основні етапи лінійного пошуку такі:

    старт з верхніми елементами масиву.
  1. Цільове значення слід порівняти з поточним елементом.
  2. Пошук є успішним, якщо поточний елемент відповідає запитуваному значенню, і тоді алгоритм може повернути індекс елемента або будь-який інший бажаний результат.
  3. Перейти до наступного елемента в масиві, якщо поточний елемент не відповідає потрібному значенню.
  4. Повторюйте кроки 2-4, доки не буде встановлено збіг або не досягнуто кінця масиву.

програма:

 #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. Двійковий пошук

The двійковий пошук Техніка використовується для швидкого пошуку певного елемента в сортованому масив або список . Він використовує a розділяй і володарюй стратегія , періодично скорочуючи область пошуку навпіл, доки цільовий елемент не буде знайдено або виявиться відсутнім.

Ось як працює двійковий пошук:

  1. Майте відсортований масив або список як основу.
  2. Встановіть два покажчики, зліва і правильно , початкові значення яких вказують на перший і кінцевий члени масиву.
  3. використання (ліворуч + праворуч) / 2 щоб отримати індекс центрального елемента.
  4. Порівняйте цільове значення з середнім елементом.
    1. Пошук є успішним, якщо вони рівні, і тоді програма може повернути індекс або будь-який інший необхідний результат.
    2. Правий покажчик слід перемістити на елемент, що передує середній елемент якщо середній елемент більший за цільове значення.
    3. Перемістіть лівий покажчик до елемента, наступного за середній елемент якщо значення середнього елемента менше цільового значення.
  5. Кроки 3 і 4 слід повторювати, доки цільовий елемент не буде знайдено або лівий покажчик не перевищить правий.
  6. Потрібний елемент відсутній у масиві, якщо його неможливо знайти.

програма:

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