Aquí está la entrada de wikipedia
Si nos fijamos en el enfoque iterativo simple. Simplemente está eliminando la mitad de los elementos a buscar hasta que encuentre el elemento que necesita.
Aquí está la explicación de cómo se nos ocurre la fórmula.
Digamos inicialmente que tiene N número de elementos y luego lo que hace es ⌊N / 2⌋ como primer intento. Donde N es la suma del límite inferior y el límite superior. El primer valor de N sería igual a (L + H), donde L es el primer índice (0) y H es el último índice de la lista que está buscando. Si tiene suerte, el elemento que intenta encontrar estará en el medio [por ejemplo. Está buscando 18 en la lista {16, 17, 18, 19, 20} y luego calcula ⌊ (0 + 4) / 2⌋ = 2 donde 0 es el límite inferior (índice L del primer elemento de la matriz) y 4 es el límite superior (índice H del último elemento de la matriz). En el caso anterior, L = 0 y H = 4. Ahora 2 es el índice del elemento 18 que está buscando. ¡Bingo! Lo encontraste.
Si el caso fuera una matriz diferente {15,16,17,18,19} pero todavía estuvieras buscando 18, entonces no tendrías suerte y estarías haciendo primero N / 2 (que es ⌊ (0 + 4) / 2⌋ = 2 y luego se da cuenta de que el elemento 17 en el índice 2 no es el número que está buscando. Ahora sabe que no tiene que buscar al menos la mitad de la matriz en su próximo intento de buscar de forma iterativa. el esfuerzo de búsqueda se reduce a la mitad. Así que, básicamente, no busca la mitad de la lista de elementos que buscó anteriormente, cada vez que intenta encontrar el elemento que no pudo encontrar en su intento anterior.
Entonces el peor caso sería
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
es decir:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
hasta que ... haya terminado de buscar, donde el elemento que está tratando de encontrar está al final de la lista.
Eso muestra que el peor de los casos es cuando alcanzas N / 2 x donde x es tal que 2 x = N
En otros casos, N / 2 x donde x es tal que 2 x <N El valor mínimo de x puede ser 1, que es el mejor de los casos.
Ahora, matemáticamente, el peor caso es cuando el valor de
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Más formalmente ⌊log 2 (N) + 1⌋