Differences

This shows you the differences between two versions of the page.

Link to this comparison view

work:2024-4 [2024/01/22 11:59] – created magsilvawork:2024-4 [2024/01/23 01:52] (current) magsilva
Line 1: Line 1:
 ====== Semana 4 de 2024 ====== ====== Semana 4 de 2024 ======
 +
 +===== Ensino =====
 +  * Caso interessante de erros desapercebidos em algoritmos do cotidiano. Por muitos anos, a implementação de referência do Java possuía um erro na busca binária. Em Java, um array (agregado sequencial homogêneo de dados?) possui um tamanho máximo, correspondente ao maior número inteiro (int, 2^64). Na busca binária, é necessário encontrar iterativamente o elemento do meio da sequência de dados ordenados, usando como base os índices da esquerda e da direita. Eis aí o problema: se o array for muito grande e os valores dos índices à esquerda e à direita forem também grandes, a conta trivial típica (índice_esquerdo + índice_direito) / 2 pode causar um estouro (overflow) do número inteiro. Felizmente, é possível substituir esta conta por uma em que nunca ocorre o estouro do número: índice_esquerdo + (índice_direito - índice_esquerdo) / 2. Referências:
 +    * Relato original do erro do Sun JDK: https://bugs.java.com/bugdatabase/view_bug?bug_id=5045582
 +    * Explicação do desenvolvedor sobre o erro: http://blog.research.google/2006/06/extra-extra-read-all-about-it-nearly.html
 +    * Vídeo sobre o erro: https://www.youtube.com/watch?v=_eS-nNnkKfI
  
 ===== Miscelânea ===== ===== Miscelânea =====