Busca Binária - Não recursivo
Publicado por Fabio Curtis Volpe 29/04/2005
[ Hits: 11.820 ]
Busca não recursivo
/***************************************************************************
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]);
}
Como verificar a validade de um CPF
Conjunto de Mandelbrot (Fractal)
Nenhum comentário foi encontrado.
Berry Bank: Criando um Banco Digital Gamificado para seus Filhos com Gentoo, Flask e Tailscale
Papagaiando o XFCE com temas e recursos
Instale o DOOM Retro no Gentoo facilmente via Overlay
Steam (Flatpak) rodando jogos em partição NTFS
O dock Plank + U-Launcher deixam qualquer desktop mais produtivo
Instalar Linux em notebook Sony Vaio VPCEG13EB (17)
Alguém tem que acabar com ANATEL!!! (10)
O que você está ouvindo agora? [2] (229)









