[quote=RafaelVS][quote=gk-bgh] Pelo que eu entendi do livro a resposta seria E. O indice vai de 0 a 4 e a fórmula segundo o livro seria ( ( ( -1 * indice) - 1) ) . Colocando o maior indice seria (-4) - 1 = -5. -5 a 4 que seria resposta E.
A resposta pelo livro é G. Alguém me explica? [/quote]
Oi… a fórmula é essa daí… mas tem um detalhezinho que vc n observou:
O retorno do binarySearch retorna o índice do elemento, caso a busca tenha sucesso, ou trás o resultado da fórmula ( ( -1 * indice) - 1 ), caso a busca não tenha sucesso (onde esse índice é a posição onde o elemento buscado deveria estar, mas não está).
Então, se o elemento a ser buscado não existisse e ele fosse maior (compare() retorna > 0) do que todos os outros, então o índice dele, caso ele existisse na coleção, seria 5… mas como não existe, então o resultado é (-1 * 5 - 1), que dá -6 e, por isso, a faixa de valores é de -6 a 4.
Ex.:
String[] s = {"1","2","3","4","5"};
System.out.println(Arrays.binarySearch(s, "6")); //Exibe -6, pois deveria estar no índice 5, mas n está.
System.out.println(Arrays.binarySearch(s, "5")); //Exibe 4, pois está no índice 4.
[]'s[/quote]
exatamente…
esse metodo retorna a posicao aonde ele vai inserir o cara (se não encontrá-lo no conjunto)… se o cara for maior que todos os outros, vai inserir depois da ultima posicao, no caso a ultima posicao é “-5”… inseriria na “-6”