quarta-feira, 22 de setembro de 2010

Busca binaria

//Proggrama para realizar busca sequencial e binária
#include
#include
#define MAX 100 // tamanho máximo do vetor

int v[MAX]; // declaração do vetor global

int sequencial (int y)
{
int i,c=0;
for (i = 0; i < MAX; i++)
{
if (v[i] == y) return(i);
c++;
}
printf("\ntempo sequencial: %d\n",c);
return (-1);
}
//------------------------------------------

int binario (int y)
{
int esq = 0, dir = MAX -1, meio,c=0;
while(esq <= dir)//condicao do loop
{
c++;
meio = (int)((esq + dir) /2);//vslcula o meio inteiro
printf("\nmeio:d%",meio);
if (y > v[meio])//verificar se y esta a direita do meio
esq = meio + 1;
else
if(y < v[meio])//verificar se y esta a esquerda do meio
dir= meio - 1;
else
break;//achou


}
printf("\ntempo binario: %d\n",c);
if (esq > dir)//condicao de nao encontrado o y
return(-1);

return(meio);
}
//------------------------------------------

void preencher()
{
int i;
for (i = 0; i < MAX; i++)
//v[i] = rand()%100;
v[i] = i;
}
//------------------------------------------
void mostrar()
{
int i;
for (i = 0; i < MAX; i++)
printf("\n v[%d]=%d", i, v[i]);
}
//------------------------------------------
int main()
{
int j, n;

preencher();
//mostrar();
printf("\n digite um numero:"); scanf("%d", &n);

j = sequencial(n);

if(j == -1)
printf("\n nao encontrado \n");
else
printf("\n percurso sequencial-> indice: %d \n", j);

j= binario(n);
if (j==-1)
printf("\nnao encontrado com binario\n");
else
printf("\npercurso binario -> indice: %d \n", j);

system("pause");
return (0);
}

Nenhum comentário:

Postar um comentário