Busca Binária - Não recursivo
Publicado por Fabio Curtis Volpe 29/04/2005
[ Hits: 11.705 ]
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]);
}
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Preciso recuperar videos *.mp4 corrompidos (2)
Secure boot, artigo interessante, nada técnico. (1)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (6)









