If dentro de While em 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.
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
Curtidas 1
Respostas
Djessyca
20/01/2020
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!
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!
GOSTEI 0