Busca Binária - Não recursivo

Publicado por Fabio Curtis Volpe 29/04/2005

[ Hits: 11.473 ]

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

Calculadora

Retirar ocorrências de uma substring dentro de uma string

Super Thiagout (Breakout) - O Jogo

Aterm multi-color

Binário para Decimal, Hexa, Char


  

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