| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 15/08/2007 16:11:45
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
Pessoal,
Dado o código abaixo:
Alguém sabe explicar por que a saída é:
Array inicial: [2, 3, 1, 5]
Com a ordenação 1, a lista fica assim [5, 3, 2, 1] e a posição do número 3 é: 1
Com a ordenação 2, a lista fica assim [1, 2, 3, 5] e a posição do número 3 é: -1
[]'s
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/08/2007 01:03:19
|
hadilson
Debugger
Membro desde: 11/08/2007 23:51:17
Mensagens: 64
Localização: Uberlândia
Offline
|
Na busca binária, primeiro, toma-se o elemento do meio e compara-se com o elemento chave de procura (no caso, o três). Se for igual, retorna a posição; se maior, toma-se o elemento do meio, entre o meio prévio e o final; se menor, toma-se o elemento do meio, entre o início e o prévio. E continua.
No caso do seu teste, no primeiro caso, temos:
meio = (inicio + fim)/2 = (0 + 3)/2 = 1
Por sorte, na primeira tentiva ele achou o 3 que você pediu. (Se você tentar um chave de procura que não esteja no meio do array ele não vai achar.)
No segundo caso, a chave de busca não é igual ao meio. O algoritmo compara para saber qual o proximo segmento a analisar. Pela ordenação, o elemento é maior do que o meio, mas o comparator é inverso, e vai informar que é menor. Como no primeiro segmento, a chave não está presente, retorna -1.
|
"Politics is supposed to be the second oldest profession. I have come to realize that it bears a very close resemblance to the first." Ronald Reagan.
Adilson Pereira Silva
Universidade Federal de Uberlândia |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/08/2007 11:04:51
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
Perfeito, hadilson
testei procurando o elemento 1 (que não está no meio em nenhuma das ordenações) e o resultado foi:
Array inicial: [2, 3, 1, 5]
Com a ordenação 1, a lista fica assim [5, 3, 2, 1] e a posição do número 3 é: -1
Com a ordenação 2, a lista fica assim [1, 2, 3, 5] e a posição do número 3 é: -5
Esse sim é o resultado que eu esperava na versão anterior (2 resultados negativos).
Valeu!
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/08/2007 15:20:45
|
anderson.bonavides
GUJ Master
![[Avatar]](/images/avatar/b9d21287003f6041d2efb5c0cbcce3fd.jpg)
Membro desde: 30/07/2007 22:43:05
Mensagens: 1151
Offline
|
Tentei compilar sua questão com todas as bibliotecas mas deu problema no List... pede pra mim renomear ele...
|
Sun Certified Java Programmer 5.0 |
|
|
 |
|
|
|
|