Busca Binária - Não recursivo

Publicado por Fabio Curtis Volpe 29/04/2005

[ Hits: 11.312 ]

Download buscaBinaria.c




Busca não recursivo

  



Esconder código-fonte

/***************************************************************************
   Fábio Curtis Volpe                                                    
   curtis.volpe@gmail.com                                                
                                                                         
                                             BUSCA BINÁRIA                               
 ***************************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>

#define MAX 10

int v[MAX];

int main()
{
 int i, ele;

 for(i=0; i<MAX; i++)
 {
  v[i]=rand()/10000000;
 }

 /* ordenando o vetor - quicksort */

 qs(v, 0, MAX-1);

 printf("Elementos do vetor\n");

 for(i=0;i<MAX;i++)
  printf("%d\n", v[i]);

 printf("\nBusca Binária\n");
  printf("Digite um elemento:");
   scanf("%d", ele);

 buscaBinaria(v, ele, 0, MAX);

}

void qs(int *v, int left, int right)
{
  int i, j;
  int x, y;

  i=left; j=right;
  x=v[(left+right)/2];

  do {
    while(v[i]<x && i<right) i++;
    while(x<v[j] && j>left) j--;

    if(i<=j) {
      y=v[i];
      v[i]=v[j];
      v[j]=y;
      i++; j--;
     }
    }while(i<=j);

    if(left<j) qs(v, left, j);
    if(i<right) qs(v, i, right);

}

void buscaBinaria(int *v, int *ele, int inicio, int fim)
{
   int meio, i, f, elemento=0;

   elemento=*ele;

   while(inicio<=fim){
      meio=(inicio+fim)/2;

      if(elemento<v[meio])
        {
         meio=meio-1;
         fim=meio;
        }

      else//(elemento>v[meio]);
        inicio=meio+1;
     }

    if(elemento!=v[meio])
     printf("\nNão existe o elemento %d\n\a\a", elemento);

    else
     printf("\nExiste o elemento %d\n\a\a", v[meio]);
}

Scripts recomendados

Escrevendo Colorido no C

Árvore binária

Sequência de Fibonacci em C

Sequência fibonacci com 35 linhas e for

Regra de Horner para cálculo do polinômio


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts