logo

Programa C para pesquisar um elemento em uma matriz

Neste artigo, discutiremos o programa C para busca de um elemento em um Array com suas diferentes formas e exemplos.

O que é uma matriz?

A estrutura de dados chamado de variedade contém uma série de comprimento fixo de itens de tipo idêntico. É frequentemente usado para armazenar e manipular coleções de dados porque a indexação permite acesso eficiente.

15 de 100,00

Ex: intnúmeros[] = {10, 20, 30, 40, 50};

Pesquisando um elemento em um array

Uma operação típica em programação de computadores é procurar um elemento específico em um array. A eficiência do seu código pode ser bastante melhorada usando algoritmos de pesquisa eficientes, quer você esteja pesquisando a existência de um determinado valor, localizando o índice de um elemento ou verificando se um elemento existe. Os vários métodos para pesquisar elementos em um array usando a linguagem de programação C serão discutidos neste artigo.

Existem basicamente duas maneiras de pesquisar um elemento em uma matriz:

1. Pesquisa Linear

Uma estratégia de pesquisa simples usada para localizar um determinado elemento em um array ou lista é chamada pesquisa linear , às vezes referido como pesquisa sequencial . Ele opera comparando cada membro da matriz com o valor alvo para encontrar um corresponder ou atravessar a matriz completa iterativamente.

carteiro

As etapas fundamentais na pesquisa linear são as seguintes:

    Começar com os elementos superiores da matriz.
  1. O valor alvo deve ser comparado ao elemento atual.
  2. A pesquisa será bem-sucedida se o elemento atual corresponder ao valor solicitado e então o algoritmo poderá retornar o índice do elemento ou qualquer outra saída desejada.
  3. Vá para o seguinte elemento na matriz se o elemento atual não corresponder ao valor desejado.
  4. Até que uma correspondência seja feita ou o final da matriz seja alcançado, repita as etapas 2 a 4.

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&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. Pesquisa binária

O pesquisa binária técnica é utilizada para localizar rapidamente um elemento específico em uma lista ordenada. variedade ou lista . Ele usa um dividir e conquistar estratégia , cortando periodicamente a área de pesquisa pela metade até que o elemento de destino seja localizado ou esteja ausente.

É assim que a pesquisa binária funciona:

  1. Tenha um array ou lista classificada como base.
  2. Estabeleça dois ponteiros, esquerda e certo , com seus valores iniciais apontando para o primeiro e o final dos membros da matriz.
  3. Usar (esquerda + direita) / 2 para obter o índice do elemento central.
  4. Compare o valor alvo com o elemento intermediário.
    1. A pesquisa será bem-sucedida se eles forem iguais e então o programa poderá retornar o índice ou qualquer outro resultado necessário.
    2. O ponteiro direito deve ser movido para o elemento anterior ao elemento do meio se o elemento do meio for maior que o valor alvo.
    3. Mova o ponteiro esquerdo para o elemento seguindo o elemento do meio se o valor do elemento intermediário for menor que o valor alvo.
  5. Passos 3 e 4 deve ser repetido até que o elemento alvo seja localizado ou o ponteiro esquerdo exceda o ponteiro direito.
  6. O elemento desejado não estará na matriz se não puder ser localizado.

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