bf0269714@gmail.com Posted November 24, 2022 at 03:11 PM Share Posted November 24, 2022 at 03:11 PM Estou utilizando este código para uma busca binária, porém ao compilar, não me retorna a resposta desejada, não encontrei o erro, poderiam me dar um help? Muito obrigada. #include<iostream> // p. usar cout cin #include<new> // p. alocação de memória #include<string> // trabalhar com textos #include<stdlib.h> // implementa funções p. diversas operaões #include<locale.h> #define TAM 10 using namespace std; // p. utilisar cout cin void imprimeVetor(int vetor[TAM]){ int cont; // auxiliar contador //Imprime o vetor: for (cont = 0; cont < TAM; cont ++){ cout << vetor[cont] << " - "; } } int buscaBinaria(int vetor[TAM], int valorProcurado, int *posicaoEncontrada){ int esquerda = 0; // limite da esquerda int direita = TAM -1; // limite da direita int meio; // O meio onde fica o cursor while(esquerda <= direita){ meio = (esquerda + direita)/2; //Quando o valor do meio é encontrado: if(valorProcurado == vetor[meio]){ *posicaoEncontrada = meio; return 1; }else if(valorProcurado < vetor[meio]){ esquerda = meio -1; }else{ direita = meio +1; } } return -1; } int main(){ setlocale(LC_ALL, ""); int vetor[TAM] = {1, 29, 93, 75, 39, 03, 49, 90, 23, 20}; int valorProcurado; int posicao, posicaoEncontrada; //Auxiliar contador int cont; //Imprime o vetor na tela: imprimeVetor(vetor); cout << "Qual número deseja encontrar?"; cin >> valorProcurado; if(buscaBinaria(vetor, valorProcurado, &posicaoEncontrada) == 1){ cout << "O valor foi encontrado na posição:" << posicaoEncontrada; }else{ cout << "O valor não foi encontado."; } return 0; } Quote Link to comment Share on other sites More sharing options...
fredericopissarra Posted November 25, 2022 at 12:01 PM Share Posted November 25, 2022 at 12:01 PM (edited) Alguns detalhes: O código não tem nada dependente de localização, então usar setlocale() ali é supérfluo; Busca binária (binary search) exige que o array esteja em ordem... Seu array, obviamente, não está; C (e, de lambuja C++) já possui a rotina bsearch(); C++20 possui o algoritmo std::binary_search(). Edited November 25, 2022 at 12:06 PM by fredericopissarra 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.