MergeSort e Busca Binaria são quebrados

Não achei aqui no forum e é uma notícia interessante para nós, pois vem do próprio Mr. Effective Java:

e como ele deixa claro, não apenas em java, mas potencialmente em muitas outras linguagens (exceto as altamente dinamicas como SmallTalk, scheme, etc)

/jdk/j2sdk1.5.0/bin/java -Xmx1200m -server Search

1.2 gigas só pra array de int. O mesmo problema no Collections.binarySearch nem deve dar pra ver… instanciar e segurar referencia para 1 bilhao de objetos vai estourar bem a ram de qualquer micro.

bem, eu tambem recomendo o livro do bentley, assim como meus professores me recomendaram… pena ser tudo em C e algumas coisas de programacao defensiva nao fazerem sentido em java (mas as ordenacoes dele com 8k de memoria sao hilarias)

Olá

8Kb? Que desperdício! A ponte Rio Niteroi foi toda calculada usando um IBM 1130 com 4 Kb de memória disponível somando dados e programa.

Antigamente ninguém recomendaria busca binária em arrays gigantescos porque busca binária pressupõe um array ordenado. Há outras maneiras muito mais eficientes de armazenar um array grande para facilitar futuras buscas.

[]s
Luca

bom mas alguem usou um array desse tamanho e descobriu o bug, entao nao eh totalmente inpensavel…
ou entao o Joshua Block quis mostrar que o google trabalha com arrays gigantes =P

Já ouvi falar que o google trabalha com arrays e hash, e já que ele indexou praticamente o mundo inteiro…

Sim, provavelmente eles usam array e hashing! Eu diria que não só eles mas 100% - epsilon dos softwares desenvolvidos usam um dos dois.

Não sei se está de deboche (não que seja problema :D), mas se for, o que eu quiz dizer é que é como se fosse o elemento X da parada…

Olá

Está insinuando que os profissionais do google não sabem nada de estruturas de dados? Eles não fariam isto nem só pudessem usar Fortran 66.

Se algum programador escrever um código para armazenar enormes conjuntos ordenados usando somente arrays, mesmo que sem elementos redundantes, pode ter certeza de que o cara é completamente analfabeto em informática.

Se o array chegar até o porte em questão é porque o programador além de ignorante é muito rico para dispor de máquina com memória tão grande capaz de alocar tudo.

[]s
Luca

100% - epsilon foi ótima! hehehehe! :lol:

Aparentemente eles não usaram nenhum destes métodos :smiley:

O bug report da sun é o melhor:

O que vocês usam para minimizar bugs? Eu trabalho numa empresa que pensa que está na década de 80, com programadores codificando e testers procurando erros aleatoriamente…
Vocês nunca deixaram passar um bug pensando “ah, isso nunca vai acontecer”?

Já.

“Ah, ninguém vai mandar imprimir um relatório com mais de 10 mil itens.”

:?

[quote=Luca] Há outras maneiras muito mais eficientes de armazenar um array grande para facilitar futuras buscas.
[/quote]

Não sei hoje, mas o Oracle usava árvore B para as estruturas de seus índices.

Nao foi ano passado que falaram sobre isso?

http://www.nist.gov/dads/HTML/binarySearch.html

Quem gosta de algoritmos, entre no site do uva e divirta-se com as toneladas de problemas onde a diferenca entre + e - fazem a diferenca: (frase estranha)
http://acm.uva.es/problemset
La existem duzias de problemas onde esse + em vez de - nao resolve o exercicio.

[quote=takeshi10]Não achei aqui no forum e é uma notícia interessante para nós, pois vem do próprio Mr. Effective Java:

e como ele deixa claro, não apenas em java, mas potencialmente em muitas outras linguagens (exceto as altamente dinamicas como SmallTalk, scheme, etc)[/quote]

Bom, pelo que vi o bug é de implementacao e nao do algoritmo. Menos Mal :smiley: