Boa noite,
Na resolução da busca binaria os 4 primeiros índices não estão sendo achados, mesmo eles estando dentro do vetor. Na aula o professor faz da posição do meio para o fim e de um numero não existente, mas não das posições iniciais e eu fazendo o teste mesmo os números dentro do vetor ele não acha o valor. Vou colocar o código para que seja analisado se estou fazendo algo de errado.
programa
{
inclua biblioteca Util
--> u
funcao inicio()
{
inteiro vet[10], i = 0, j = 0
logico encontrado
//Sorteia o vetor sem repetição
enquanto(i < u.numero_elementos(vet)){
vet[i] = sorteia(1,20)
encontrado = falso
para(inteiro aux = 0; aux < i; aux++){
se(vet[aux] == vet[i]){
encontrado = verdadeiro
pare
}
}
se(nao encontrado){
i++
}
}
//Usa a técnica de SWAP para colocar em ordem um vetor
inteiro aux2 = 0
para(i = 0; i < u.numero_elementos(vet)-1; i++){
para(j = i+1; j < u.numero_elementos(vet); j++){
se(vet[i] > vet[j]){
aux2 = vet[i]
vet[i] = vet[j]
vet[j] = aux2
}
}
}
para(i = 0; i < u.numero_elementos(vet); i++){
escreva(vet[i]," ")
}
inteiro chave
escreva("\nQuer buscar qual valor? ")
leia(chave)
encontrado = falso
inteiro ini = 0, fim = u.numero_elementos(vet)-1, meio = 0
enquanto(ini < fim){
meio = (ini + fim) / 2
se (vet[meio] == chave){
encontrado = verdadeiro
pare
} senao {
se (chave > vet[meio]){
ini = meio + 1
} senao {
fim = meio - 1
}
}
}
se (encontrado){
escreva("O valor ",chave," foi encontrado na posição ", meio ," do vetor.")
}senao{
escreva("Infelizmente o valor ",chave," não foi encontrado no vetor.")
}
}
}