La búsqueda binaria es una — su estimación de complejidad es O(log2(n)) , mientras que la búsqueda secuencial convencional tiene O(n) . Esto significa que, por ejemplo, para una matriz de 1024 elementos, una búsqueda lineal, en el peor de los casos, cuando el elemento deseado no está en la matriz, procesará los 1024 elementos. La búsqueda binaria es suficiente para procesar elementos \(log_2(1024) = 10\). Este resultado se logra debido al hecho de que después del primer paso del bucle, el área de búsqueda se reduce a 512 elementos, después del segundo – hasta 256 etc.
Las desventajas de este algoritmo son el requisito de ordenar los datos, así como la capacidad de acceder a cualquier elemento de datos en un tiempo constante (independientemente de la cantidad de datos). Por lo tanto, el algoritmo no puede funcionar en matrices no ordenadas ni en ninguna estructura de datos basada en listas vinculadas.
Implementación
adiós (derecha – izquierda > 1) // Siempre que el borde derecho esté a la derecha de la izquierda
nc
medio = (izquierda + derecha) /< /span> 2; // Medio del área de búsqueda
si (A[medio] >= b) entonces
derecha = medio; // Mover el borde derecho
de lo contrario
izquierda = medio; // De lo contrario, mueva el borde izquierdo
cc
si (A[derecha] == X) entonces
salida derecha;
de lo contrario
salida -1;
donde:
A - matriz fuente,
N - tamaño de matriz,
X - el número deseado.
|