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