Você está na página 1de 4

BUSCA BINRIA E LINEAR

Quando os elementos de um vetor esto previamente classificados segundo algum critrio, ento pesquisas muito mais eficientes podem ser conduzidas. Entre elas destaca-se o mtodo da pesquisa binria.

Seu funcionamento o seguinte: inicialmente o vetor classificado ( por exemplo, em ordem crescente). O elemento que divide o vetor ao meio (ao menos aproximadamente) com relao ao seu nmero de componentes localizado e comparado ao valor procurado. Se for igual ao valor procurado a pesquisa dita bem-sucedida e interrompida. No caso dele ser maior que o valor procurado, repetese o processo na primeira metade do vetor. Este procedimento continuado at que o elemento desejado seja localizado (busca bemsucedida), ou ento, at que no reste mais um trecho do vetor a ser pesquisado (pesquisa mal-sucedida).

O mtodo de pesquisa binria tem a desvantagem de exigir que o vetor seja previamente ordenado para seu correto funcionamento, o que no acontece no caso da pesquisa seqencial. Por outro lado, o mtodo da pesquisa binria em mdia mais rpido que o mtodo de pesquisa seqencial.
#include <stdio.h> #include <conio.h> main(){ int v[10], i, j, pesquisa, inicio, final, meio, aux, resposta, achou; for(i=0; i<10 ; i++){ printf("\nInforme um valor para V[%d]: ", i); scanf("%d", &v[i]); }

/* Ordena o vetor, usando Bubblesort e reaproveitando as variveis*/

for(i=0; i<9 ; i++){ for(j=0; j<(9-i); j++){ if( v[j]>v[j+1] ){ aux = v[j]; v[j]= v[j+1]; v[j+1] = aux; } } } printf("\n\n___________________________________________________\n\n"); /* Mostra em tela o vetor ordenado*/ for(i=0 ; i<10 ; i++){ printf("V[%d] = %d \n\n", i, v[i]); } printf("\n\n__________________________________________________\n\n"); /* Inicia-se a pesquisa.*/ printf("Deseja pesquisar um numero? 1 - Sim ou 0 - Nao : "); scanf("%d", &resposta); printf("\n\n\n"); while(resposta == 1 ){ printf("Informe o numero a ser pesquisado: "); scanf("%d", &pesquisa); inicio = 0 ; final = 9 ; achou = 0; /*Falso*/ while(inicio <= final && achou == 0 ){ meio = (inicio + final)/2 ; achou = 0 ; if(pesquisa == v[meio]){ achou = 1 ; } else if(pesquisa < v[meio]){ final = meio - 1 ; } else{ inicio = meio + 1; } } if (achou == 1 ){ printf("%d foi localizado no indice %d\n\n", pesquisa, meio); } else{ printf("%d nao foi localizado no vetor\n\n", pesquisa); } printf("Deseja pesquisar um numero? 1 - Sim ou 0 - Nao : "); scanf("%d", &resposta); } system("pause");

BUSCA SEQUENCIAL OU LINEAR


A pesquisa seqencial ou linear o mtodo mais objetivo para se encontrar um elemento particular num conjunto (em geral, um vetor) no classificado, isto , cujos elementos no esto ordenados segundo algum critrio.

Esta tcnica envolve a simples verificao de cada componente do conjunto seqencialmente (uma aps a outra) at que o elemento desejado seja encontrado (neste caso diz-se que a pesquisa foi bem sucedida) ou que todos os elementos do conjunto (vetor) tenham sido verificados sem que o elemento procurado tenha sido encontrado (pesquisa mal-sucedida).
#include <stdio.h> #include <conio.h> main(){ int v[10], i, pesquisa, resposta, achou; for(i=0; i<10 ; i++){ printf("\nInforme um valor para V[%d]: ", i); scanf("%d", &v[i]); } printf("\n\nDeseja pesquisar um numero? 1 - Sim ou 0 - Nao : "); scanf("%d", &resposta); printf("\n\n\n"); while(resposta == 1 ){ printf("Informe o numero a ser pesquisado: "); scanf("%d", &pesquisa); i = 0 ; achou = 0 ; while(achou == 0 && i<10){ if(v[i] == pesquisa){ achou = 1 ; } else{ i++; } } if (achou == 1 ){ printf("%d foi localizado no indice %d\n\n", pesquisa, i);

} else{ }

printf("%d nao foi localizado no vetor\n\n", pesquisa);

printf("Deseja pesquisar um numero? 1 - Sim ou 0 - Nao : "); scanf("%d", &resposta); } system("pause"); }

Lista de Exerccios

Anotaes de aula

Pesquisar

Você também pode gostar