Buscar

Exemplo de código de pesquisa binária

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
int main(){
 int *v; //Ponteiro para o vetor que ira ser alocado //
 int tamanho_vetor; // Tamanho do vetor a ser alocado //
 int i; //Variavel de controle dos loops (loop é um laço infinito em C.Para sair do laço infinito usa-se break para forçar a saída quando uma determinada condição ocorrer.//
 int valor; //Variavel que ira conter o valor temporario da posicao do vetor//
 int pesquisa; //Variavel que ira conter o elemento a ser pesquisado no vetor//
 int controle_pesquisa = 1; // Variavel de controle de pesquisa, identifica se o elemento foi encontrado //
 int inicio, meio, fim; // Variaveis de controle do vetor durante a pesquisa binaria //
 printf("Digite um tamanho para o vetor: "); // Escreve uma mensagem pedindo o tamanho do vetor //
 scanf("%d", &tamanho_vetor); //Recebe o tamanho do vetor//
 v = (int *) malloc(tamanho_vetor * sizeof(int)); //Aloca o espaco de memoria do vetor //
 if (v == NULL) //Verifica se houve erro na alocacao de memoria//
 {
 printf("Problema ao alocar vetor!"); //Exibe a mensagem de erro//
 return(1);
 }
 else
 {
 for (i = 0; i < tamanho_vetor; i++) //Alimentacao do vetor//
 {
 printf("Digite a posicao %d do vetor: ", i);
 scanf("%d", &valor);
 v[i] = valor;
 }
 printf("Digite o elemento que deseja pesquisa no vetor: "); //Recebe o valor a ser pesquisado no vetor //
 scanf("%d", &pesquisa);
 inicio = 0; //Define o inicio e o fim do vetor. (Fim do vetor: seu_tamanho - 1 //
 fim = tamanho_vetor - 1;
 while (inicio <= fim) //Loop que ira realizar a pesquisa binaria //
 {
 meio = (inicio + fim) / 2; //Obtem o meio do vetor //
 if (pesquisa == v[meio]) //Verifica se o elemento foi encontrado //
 {
 controle_pesquisa = 0;
 break;
 }
 /**
 * Se a pesquisa for menor que o meio do vetor,
 * entao o fim do vetor sera o meio atual -1
 */
 else if (pesquisa < v[meio])
 {
 fim = meio - 1;
 continue;
 }
 /**
 * Se a pesquisa for maior que o meio do vetor, entao a pesquisa
 * comecara a partir do meio atual atual do vetor
 */
 else if(pesquisa > v[meio])
 {
 inicio = meio + 1;
 continue;
 }
 /**
 * Caso nada seja encontrado, define o controle_pesquisa = 1
 */
 else
 {
 controle_pesquisa = 1;
 break;
 }
 }
 /**
 * Verifica a variavel que indica se o elemento foi encontrado ou nao.
 * Se for 0, o elemento foi encontrado, caso contrario, o elemento nao foi
 * encontrado. Basta entao exibir as mensagens.
 */
 if (controle_pesquisa == 0){
 printf("Elemento %d encontrado! Posicao: %d - Valor: %d", pesquisa, meio, v[meio]);
 } else {
 printf("Elemento %d nao encontrado!", pesquisa);
 }
 return (0);
 }
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais