public class BuscaBinaria {
public static void main(String[] args) {
Pessoa[] pessoas = new Pessoa[5];
//Vetor em ordem crescente
pessoas[0] = new Pessoa(1,"Baby Sauro");
pessoas[1] = new Pessoa(2, "Charlene Sauro");
pessoas[2] = new Pessoa(3, "Dino Sauro");
pessoas[3] = new Pessoa(4, "Fran Sauro");
pessoas[4] = new Pessoa(5, "Robert Sauro");
//onde o se encontra o indice desejado verificando se o numero 4
//encontra-se no vetor desejado
Pessoa pessoa = binario(pessoas, 4);
if (pessoa != null) {
System.out.println(pessoa.codigo+ " " + pessoa.nome);
}else {
System.out.println("Não Achou!");
}
}
public static Pessoa binario(Pessoa[] vetor, int codigoBinario) {
//variavel meio
int meio;
//variavel inicio e fim
int inicio, fim;
//variavel contendo o inicio de contagem do vetor
inicio = 0;
//o tamanho do vetor -1
fim = vetor.length-1;
//processamento onde menor igual a fim faz
while (inicio <= fim){
// para descobrir o meio do vetor, incio mais fim dividivo por 2
meio = (inicio + fim) /2;
//se o objeto pessoa no indice meio for igual pessoas que estou procurando devolvo o meio
if (Pessoa[] == pessoas)
return meio;
// se o elemento do meio for menor que pessoas procurada do meio para frente
else if (Pessoa[meio] < pessoas) inicio = meio + 1;
// se não elemento do meior for maior que peessoas procurada do meio para tras
else if (Pessoa[meio] > pessoas) fim = meio - 1;
}
return 0;
}
Não sei o que é pior o cara retornar inteiro em um objeto do tipo pessoa ou o outro falando que falta chave do bloco de código,
aqui está um solução simples do seu problema
package com.gleisonmv.bitcrypto.crypto;
class Pessoa {
public int codigo;
public String nome;
public Pessoa(int codigo, String nome) {
this.codigo = codigo;
this.nome = nome;
}
}
public class Teste {
public static void main(String[] args) {
Pessoa[] pessoas = new Pessoa[5];
// Vetor em ordem crescente
pessoas[0] = new Pessoa(1, "Baby Sauro");
pessoas[1] = new Pessoa(2, "Charlene Sauro");
pessoas[2] = new Pessoa(3, "Dino Sauro");
pessoas[3] = new Pessoa(4, "Fran Sauro");
pessoas[4] = new Pessoa(5, "Robert Sauro");
// onde o se encontra o indice desejado verificando se o numero 4
// encontra-se no vetor desejado
Pessoa pessoa = binario(pessoas, 4);
if (pessoa != null) {
System.out.println(pessoa.codigo + " " + pessoa.nome);
} else {
System.out.println("Não Achou!");
}
}
public static Pessoa binario(Pessoa[] vetor, int codigoBinario) {
// Percorre o pessoal
for(Pessoa pessoa: vetor) {
// compara o elemento codigo da pessoa com o codigo binario
if(pessoa.codigo == codigoBinario) {
// Retorna a pessoa pelo codigo
return pessoa;
}
}
// Não pessoa com o codigo retorna null
return null;
}
}
Quando compilei aquele código, apareceu o seguinte erro:
/tmp/java_k8pxdY/BuscaBinaria.java:36: error: '.class' expected
if (Pessoa[] == pessoas)
^
/tmp/java_k8pxdY/BuscaBinaria.java:44: error: reached end of file while parsing
}
^
2 erros
Só posso indicar o problema e sugerir correções, prefiro não fazer o exercício dos outros.
Já foi sugerido que corrigisse os retornos e as comparações dos ifs, mas se @Jhonatas_Oliveira insiste que o problema é outro, então não eu saberia dizer o que mais seria.