Qual o erro estou cometendo aqui?

public static void main(String[] args) {
        // TODO code application logic here
        int vet[] = {4, 10, 15, 22, 7, 50, 3};
        int pos = Arrays.binarySearch(vet, 7);// ao escolher 7 ou o 3 invés de mostrar a posição correta está mostrando uma posição negativa
        System.out.println("Encoteri o valor na posição " + pos);
}

Para usar a pesquisa binaria sua matriz deve estar ordenada.

2 curtidas

Obrigado! Sem isso, então sempre vai me mostrar alguns valores no índice correto e outros em índices inexistentes?

A pesquisa binaria parte do principio que o vetor sempre está ordenado, ela vai dividindo o vetor pela metade e analisando em qual parte está o valor procurado, se o seu vetor está fora de ordem ela não será capaz de achar os valores corretos.

Use um Arrays.sort(vet); antes da sua pesquisa para ordenar seu vetor para ela funcionar corretamente.

1 curtida

Entendi, muito obrigado!