jcristiano
(usa Fedora)
Enviado em 07/12/2010 - 16:27h
Pesquisa sequencial (percorre todo o vetor)
int PesquisaS(int vetor[], int chave){
for(int i = 0; i < sizeof(vetor); i++)
if(chave == vetor[i]) return (i);
return(-1);
}
Nesse caso, se encontrar a chave retorna a posição dela dentro do vetor, caso contrário retorna -1, ou seja, valor não encontrado. Nesse tipo de pesquisa o vetor nao precisa estar ordenado, no entanto, ele pode demandar muito tempo computacional levando em consideração a dimensão do vetor.
Outra alternativa seria a pesquisa binária, só que seu vetor deve estar ordenado.
int pesquisaB(int chave, int inicio, int fim, int vetor[]) {
if (inicio <= fim) {
int meio = (inicio + fim) / 2;
if (vetor[meio] == chave) return (meio);
if (chave < vetor[meio]) return (pesquisaB(chave, inicio, meio - 1, vetor));
return (pesquisaB(chave, meio + 1, fim, vetor));
}
return (-1);
}
Essa implementação demanda menos tempo computacional, tirando casos específicos!