pesquisa binaria em c

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==========================================");
}
Compartilhar:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • RSS
  • Twitter
  • Add to favorites
  • Diigo
  • email
  • LinkedIn
  • Live
  • Mixx
  • MySpace
  • PDF
  • Sphinn
  • StumbleUpon
  • Yahoo! Bookmarks

Tags: ,

3 Responses to “pesquisa binaria em c”

  1. Carlos Iran Chiarello says:

    Muito bem desenvolvido o algoritmo.
    Parabéns!

  2. Carlos Iran Chiarello :

    Muito bem desenvolvido o algoritmo.
    Parabéns!

    precisa ser feito alguns ajustes

  3. Jhonatas says:

    Fernando Binasco :

    Carlos Iran Chiarello :
    Muito bem desenvolvido o algoritmo.
    Parabéns!

    precisa ser feito alguns ajustes

    Como permitir selecionar o codigo inteiro xD

Leave a Reply