Busca Binária - Não recursivo

Publicado por Fabio Curtis Volpe 29/04/2005

[ Hits: 11.478 ]

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

Múltiplos de bit e byte

Gerador de letras

Pedindo uma senha ao usuário!!!

Exibe quantos números perfeitos foram digitados

Desenhando uma curva de Bézier


  

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