Olá, já reescrevi essa função várias vezes, vi vários vídeos e exemplos na internet, mas não consegui fazer a função de busca binária desse código funcionar.
O erro atual é Só encontra o número 21, os outros caem no return -1 (“elemento não encontrado”)
Podem me ajudar?
*NÃO ESTOU CONSEGUINDO FORMATAR ESTE CODIGO!!
`#include
#define TAM 8
using namespace std;
void bubble(int vetor[]);
int buscaBinaria(int v[], int e);
void imprime(int v[]);
int main(){
int op, vetor[TAM] = {108, 9, 30, 21, 12, 3, 48, 39}, e, p;
//mostrando vetor:
for(int i=0;i<TAM;i++){
cout << vetor[i];
if(i != TAM-1){
cout << " - ";
}
}
cout << endl << endl;
//menu
do{
cout << "1 - Pesquisa Binaria" << endl;
cout << "2 - Apresentar os dados da lista" << endl;
cout << "3 - Terminar o programa" << endl;
cin >> op;
switch(op){
case 1:
bubble(vetor);
cout << "Entre com elemento a ser buscado: "; cin >> e;
p = buscaBinaria(vetor, e);
if(p == -1){
cout << "\nElemento nao encontrado no vetor\n";
}else{
cout << "\nElemento encontrado na posicao " << p << " do vetor.\n\n";
}
break;
case 2:
imprime(vetor);
break;
case 3:
return 0;
break;
default:
cout << "Opcao Invalida." << endl;
break;
}
}while(op != 3);
}
//funcoes
void bubble(int vetor[]){
int aux;
for(int i=0; i<TAM;i++){
for(int j=0; j<TAM-1; j++){
if(vetor[j] > vetor[j+1]){
aux = vetor[j];
vetor[j] = vetor[j+1];
vetor[j+1] = aux;
}
}
}
cout << “\nVetor Ordenado pelo Bubble Sort: \n”;
for(int j=0; j<TAM; j++){
cout << vetor[j] << " ";
}
cout << “\n\n”;
}
//PROBLEMA:
int buscaBinaria(int v[], int e){
int ini = 0, meio, fim = TAM-1;
while(ini <= fim & meio != e){
meio = (ini + fim) / 2;
if(v[meio] == e){
return meio; //retorna a posicao de e;
}else if(v[meio] < e){
ini = meio+1;
}else if(v[meio] > e){
fim = meio-1;
}
return -1;
}
}
void imprime(int v[]){
for(int i=0; i<TAM; i++){
cout << v[i] << " ";
}
cout << endl;
}`