2011-06-16 14 views
10

Duplicar posible:
What are the pitfalls in implementing binary search?Problemas de búsqueda binaria?

que estaba examinando la página de Wikipedia para Binary Search y tropezamos con una cita de Knuth a continuación:

"A pesar de que la idea básica de búsqueda binaria es comparativamente sencillo, los detalles pueden ser sorprendentemente difíciles "

I reca Implementaré varias búsquedas binarias como parte de mi plan de estudios de informática, pero no recuerdo que sea terriblemente complicado. Sin embargo, este artículo establece que el 90% de los profesionales encuestados no puede obtener uno que funcione después de varias horas. Me gustaría asumir esto no porque estos sean programadores terribles, sino porque hay casos marginales que las implementaciones ingenuas no explican.

¿Cuáles son los detalles a los que Knuth se está refiriendo también? ¿Cuáles son los errores comunes que se deben tener en cuenta si se implementa un algoritmo de búsqueda binaria?

Nota Leí ese artículo de Bloch sobre el error Programming Pearls (desbordamiento de una int para punto medio). ¿Hay algo mas?

+1

parecía un infierno para un duplicado - lo prometo. Intenté problemas, problemas, pero supongo que el término del dinero fue 'trampas' – nsfyn55

+1

Acabo de publicar [una respuesta larga en la pregunta duplicada] (http://stackoverflow.com/questions/504335/what-are-the-pitfalls- in-implementation-binary-search/6393352 # 6393352). Pero ninguna respuesta es lo suficientemente larga como para cubrir todas las formas en que la búsqueda binaria puede ser incorrecta. :-) – ShreevatsaR

+0

[Este es un artículo] (http://www.paultaylor.eu/algorithms/binary.html) que explica algunas formas diferentes de implementar la búsqueda binaria, y tiene un par de ejercicios para enseñar cómo cambia el comportamiento una vez usted cambia los límites, las comparaciones, etc. – nawfal

Respuesta

3

Al estar en el mundo Java en mi trabajo diario, recuerdo this. Estaba bastante sorprendido cuando lo leí por primera vez, así que esta puede ser una de las cosas de las que hablaba Donald.

+4

Wow, ¿Knuth es "Donald" para usted? ;-) – ShreevatsaR

+1

Jeje, desliz de lengua, tuve que llevar a mis hijos a cierta comida rápida bien conocida recientemente. – omermuhammed

2

Uno de los mejores de referencia para el punto de búsqueda binaria es complicado Jon Bentley's Programming Pearls.

Los whole chapter 4 aborda este problema, que muestra muchas versiones incorrectas de búsqueda binaria.

p. Ej. desea encontrar el primer número que sea mayor o igual que su consulta x. Piense en los problemas +1-1 allí. ¿Cómo puede probar que su procedimiento es exactamente correcto?

Piensa acerca de estos problemas y verás que no es tan fácil.

Cuestiones relacionadas