Busca Binária - Não recursivo

Publicado por Fabio Curtis Volpe 29/04/2005

[ Hits: 11.128 ]

Download buscaBinaria.c




Busca não recursivo

  



Esconder código-fonte

/***************************************************************************
   Fábio Curtis Volpe                                                    
   [email protected]                                                
                                                                         
                                             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

Strspn

Jogo da velha reverso

Saneago ncurses

Lista simplesmente encadeada C

Multipla escolha


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário