No es difícil, solo es lento (generalmente).
En una búsqueda binaria, primero mira el elemento central de su lista. Si el elemento es más grande que el que está buscando, repita el proceso en la mitad inferior de la matriz, de lo contrario repita el proceso en la mitad superior de la matriz hasta que se quede sin elementos o encuentre el elemento estas buscando. En cada recurrencia, debe encontrar el elemento central de una parte de la lista.
En el caso de una lista vinculada, encontrar el elemento del medio requiere atravesar la primera mitad de los elementos. Para una lista enlazada que contiene N elementos, su búsqueda solo tomará N comparaciones de registro, pero habría atravesado aproximadamente N elementos en el proceso . Por lo tanto, para una comparación razonablemente rápida, el costo de recorrer la lista eclipsará el costo de hacer las comparaciones. Por lo general, obtendrá un mejor rendimiento simplemente haciendo una búsqueda lineal de todos los elementos hasta que encuentre el que está buscando. El tiempo promedio para una búsqueda lineal es proporcional a N / 2.
- ¿Cuáles son los mejores libros para aprender estructuras de datos y algoritmos para un principiante con poco lenguaje de programación de C?
- ¿Cuáles son las diferencias entre Algorithmia y Amazon Lambda?
- ¿Habrá diferentes algoritmos para implementar la inserción y eliminación de una estructura de datos como b árboles?
- ¿Qué puedo hacer para mejorar mi habilidad matemática en estructura de datos y programación general?
- ¿Existe un algoritmo para determinar el algoritmo óptimo para ordenar un conjunto de datos en particular?
Sin embargo, hay una excepción. Si la operación de comparación es extremadamente costosa (como abrir un archivo y mirar su contenido), entonces el costo de atravesar la lista podría caerse y una búsqueda binaria en una lista vinculada funcionaría bien.