Siempre he escuchado que la búsqueda lineal es un enfoque ingenuo y que la búsqueda binaria es mejor que en rendimiento debido a una mejor complejidad asintótica. Pero nunca entendí por qué es mejor que la búsqueda lineal cuando se requiere ordenar antes de la búsqueda binaria.
La búsqueda lineal es O(n)
y la búsqueda binaria es O(log n)
. Esa parece ser la base para decir que la búsqueda binaria es mejor. Pero la búsqueda binaria requiere una clasificación que es O(n log n)
para los mejores algoritmos. Por lo tanto, la búsqueda binaria no debería ser realmente más rápida, ya que requiere ordenación.
Estoy leyendo CLRS en el que el autor implica que en el orden de inserción en lugar de utilizar el enfoque de búsqueda lineal ingenuo, es mejor utilizar la búsqueda binaria para encontrar el lugar donde se debe insertar el elemento. En este caso, esto parece estar justificado, ya que en cada iteración de bucle hay una lista ordenada sobre la cual se puede aplicar la búsqueda binaria. Pero en el caso general en el que no hay garantía sobre el conjunto de datos en el que necesitamos buscar, ¿no está usando la búsqueda binaria en realidad peor que la búsqueda lineal debido a los requisitos de clasificación?
¿Hay algunas consideraciones prácticas que estoy pasando por alto que hacen que la búsqueda binaria sea mejor que la búsqueda lineal? ¿O la búsqueda binaria se considera mejor que la búsqueda lineal sin considerar el tiempo de cálculo requerido para la clasificación?