não consigo achar o erro neste programa...fiz varias vezes o teste de mesa e mesmo assim no teste sempre da certo...coloquei esses System.out.printf pra tentar ver onde tava o erro mais ta certo, o problema é q parece q ele n entra no while pq n aparece o System.out.printf q tá ali dentro e sempre vola false..
O PROGRAMA:
A pesquisa ou busca binária ( em inglês binary search algorithm) é um algoritmo de busca em coleções indexadas. Ela parte do pressuposto de que a coleção está ordenada, e realiza sucessivas divisões do espaço de busca comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor
MEU CÓDIGO:
public class Pedro{
public boolean buscaNumero(int numero, int[] conjunto){
int i=0;
int j=conjunto.length-1;
int k=(i+j)/2;
System.out.printf("%d\n",i);
System.out.printf("%d\n",j);
System.out.printf("%d\n",k);
System.out.printf("%d\n",numero);
while(i==j)
{
if(conjunto[k]==numero)
return true;
else if(numero > conjunto[k])
i=k+1;
else
j=k-1;
k=(i+j)/2;
System.out.printf("%d\n",i);
System.out.printf("%d\n",j);
System.out.printf("%d\n",k);
}
return false;
}
}
public class InterfacePedro{
public static void main(String args[]){
Pedro execute=new Pedro();
int[] conjunto = {3,8,10,15,18,23,25,27,30,33,34,37};
int numero=15;
System.out.println( execute.buscaNumero(numero, conjunto) );
}
}
ONDE TA O ERRO???
vlw a ajuda...
