Um exemplo de pesquisa binária com a linguagem de programação C nos valores de um vetor.
#include <stdio.h>
int funcContinua(){
char resposta='z';
printf("\n Deseja realizar outra pesquisa (s/n)? ");
while(resposta!='s' && resposta!='n'){
scanf("%c",&resposta);
if(resposta=='s'){
return 1;
}else if(resposta=='n'){
return 0;
}else{
puts("\n Digite 's' ou 'n'");
}
}
return 0;
}
void main(){
int dado_proc,
i=1,
j=1,
tabela[120],
meio =0,
teste=0,
inicio=1,
continua=1,
fim,
sucesso=0,
semsucesso=0,
pesquisa =0;
float percento,
totalteste=0.0;
//monta vetor com os numeros preenchidos
while(i<=150){
printf(" %d ",i);
tabela[j] = i;
if(j%2==0)
i++;
else
i=i+2;
j++;
}
//inicio da pesquisa
while(continua){
puts("\n Entre com um numero:");
scanf("%d",&dado_proc);
fim = j-1;
inicio=1;
teste = 0;
meio =(inicio+fim)/2;
while(dado_proc != tabela[meio] && inicio <= fim){
if(dado_proc > tabela[meio]){
inicio=meio+1;
}else{
fim = meio-1;
}
meio =(inicio+fim)/2;
teste++;
}
totalteste += teste;
if(dado_proc == tabela[meio]){
sucesso++;
puts("\n Achou");
teste++;
}else{
semsucesso++;
puts("\n NAO achou");
}
printf("\nTestes: %d \n\n",teste);
pesquisa++;
continua = funcContinua();
}
percento = (sucesso*100)/pesquisa;
puts("\n==========================================");
printf("\n Sem sucesso: %d",semsucesso);
printf("\n Sucesso: %d",sucesso);
printf("\n Percentual com sucesso: %5.2f",percento);
printf("\n Media de testes: %5.2f",(totalteste/pesquisa));
puts("\n==========================================");
}
Tags: Algoritimos, C ANSI
Muito bem desenvolvido o algoritmo.
Parabéns!
precisa ser feito alguns ajustes
Como permitir selecionar o codigo inteiro xD