Busca Binária - Não recursivo

Publicado por Fabio Curtis Volpe 29/04/2005

[ Hits: 11.445 ]

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

Shadow Mapping usando OpenGL e Cg

NCURSES - Parte III

Agenda Telefonica

Comando strieql

Fractal Estocástico


  

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