Olá, estou tentando fazer um código para busca binária, porém ele sempre da erro quando coloco um número maior que a metade do vetor por exemplo se é um vetor com mil números de 1 a 1000 e eu escolher pra procurar o número 540 ele fica travado um tempinho e não faz o que deveria fazer, entretanto com números menores que 500 ele funciona tranquilamente, gostaria muito de uma ajuda com esse problema já tenho 6 horas tentando arrumar isso.
Pergunta
KronosWalker
Olá, estou tentando fazer um código para busca binária, porém ele sempre da erro quando coloco um número maior que a metade do vetor por exemplo se é um vetor com mil números de 1 a 1000 e eu escolher pra procurar o número 540 ele fica travado um tempinho e não faz o que deveria fazer, entretanto com números menores que 500 ele funciona tranquilamente, gostaria muito de uma ajuda com esse problema já tenho 6 horas tentando arrumar isso.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int BuscaBinaria( int *vet, int x, int control, int num, int help){
int i,y,z,max,min,med;
z=0;
med=0;
printf("Escolha um número para ser procurado no vetor entre 1 e %i : ",num);
scanf("%i",&med);
while(med!=x){
if(med<x){
max=x;
printf(" menor que : %i \n",x);
help=max+min;
control=help/2;
x=control;
z=z+1;
}
if(med>x){
min=x;
printf("maior que : %i \n", x);
help=max+min;
x=help/2;
z=z+1;
}
}
printf(" Número de procuras feitas no vetor : %i",z);
}
int main()
{
int x,*vet,num,med,lim,i,control,z,max,min,help;
printf("Escolha quantos números você quer no vetor : ");
scanf("%i",&num);
vet = malloc(num*sizeof(int*));
x=num/2;
max=num;
min=1;
med=0;
control=0;
for(i=0; i<num; i++){
vet=i+1;
}
BuscaBinaria(vet,x,control,num,help);
return 0;
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.