If dentro de While em C

20/01/2020

0

C++

Boa noite,
Desculpa se é uma pergunta muito simples mas não consegui achar resposta em nenhum lugar, estou tendo dificuldade em entender esse código abaixo:

#define TAM 7

int buscaBinaria(int vetor[TAM],int valorProcurado,int *posicao)
{
//Pra começar a pesquisa na primeira posicao
int left=0;
int right = TAM -1;
int meio;

while(left<=right)
{
meio=(left+right)/2;

if(valorProcurado==vetor[meio])
{
*posicao = meio;
return 1;
}
if(vetor[meio] < valorProcurado)
{
left=meio+1;
}
else
{
right=meio-1;
}
}
return -1;
}
int main()
{
int *vetor=NULL, *pProcura;
int procura, posicao;
bool valorEncontrado;

pProcura=&procura;
//No exemplo ele usa 10
vetor=(int*) malloc(TAM*sizeof(int));

vetor[0]=3;
vetor[1]=6;
vetor[2]=8;
vetor[3]=9;
vetor[4]=12;
vetor[5]=16;
vetor[6]=19;

for(int i=0; i<TAM; i++)
printf("%d - ",vetor[i]);

printf("Informe qual valor deseja procurar: ");
scanf("%d",pProcura);

if(buscaBinaria(vetor, procura, &posicao)==1)
{
printf("O valor informado '%d' foi encontrado na %d posicao.\n",*pProcura,posicao);
}
else
{
printf("O valor informado '%d' nao foi encontrado.\n",*pProcura);
}
int teste = buscaBinaria(vetor, procura, &posicao);
printf("%d.\n",teste);
return 0;
}
Minha dúvida se encontra no primeiro método, não consigo entender o porque do método funcionar corretamente, pois no meu entendimento, era para retornar sempre -1, mesmo se o entrar no primeiro if.
Desculpe novamente se for uma pergunta simples, estou começando a estudar programação, e obrigado para quem puder ajudar.
Luis

Luis

Responder

Posts

21/01/2020

Djessyca

Oi Luis!

Primeiramente, não peça desculpas por ter que fazer perguntas, mesmo que pareçam simples para outros devs. Perguntas são uma das melhores formas de se aprender! Eu já programo à algum tempo, mas me sinto iniciante ainda, e sempre que tenho dúvidas eu procuro por respostas. Nossa área é muito ampla e não há alguém que saiba de tudo. Todos estão aprendendo o tempo todo. Eu e você também :)

Sobre a tua dúvida, eu localizei esse vídeo no youtube que poderá te auxiliar a compreender melhor: (Busca Binária do canal DevPleno) https://www.youtube.com/watch?v=l6pxuyV3mKQ


Espero ter ajudado. Bons estudos!
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar