Aqui está a wikipedia entrada da
Se você observar a abordagem iterativa simples. Você está apenas eliminando metade dos elementos a serem pesquisados até encontrar o elemento necessário.
Aqui está a explicação de como criamos a fórmula.
Diga inicialmente que você tem N número de elementos e, em seguida, o que você faz é ⌊N / 2⌋ como primeira tentativa. Onde N é a soma do limite inferior e do limite superior. O primeiro valor de tempo de N seria igual a (L + H), onde L é o primeiro índice (0) e H é o último índice da lista que você está procurando. Se você tiver sorte, o elemento que você tentar encontrar estará no meio [por exemplo. Você está procurando 18 na lista {16, 17, 18, 19, 20} e calcula ⌊ (0 + 4) / 2⌋ = 2 onde 0 é o limite inferior (L - índice do primeiro elemento da matriz) e 4 é o limite superior (índice H do último elemento da matriz). No caso acima, L = 0 e H = 4. Agora 2 é o índice do elemento 18 que você está procurando. Bingo! Você achou.
Se o caso fosse uma matriz diferente {15,16,17,18,19}, mas você ainda estivesse procurando por 18, não teria sorte e faria o primeiro N / 2 (que é ⌊ (0 + 4) / 2⌋ = 2 e, em seguida, perceba que o elemento 17 no índice 2. não é o número que você está procurando. Agora você sabe que não precisa procurar pelo menos metade da matriz na sua próxima tentativa de pesquisar de maneira iterativa. Então, basicamente, você não pesquisa metade da lista de elementos pesquisados anteriormente, toda vez que tenta encontrar o elemento que não conseguiu encontrar na tentativa anterior.
Então, o pior caso seria
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
ou seja:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
até ... você terminar de pesquisar, onde o elemento que você está tentando encontrar está no final da lista.
Isso mostra que o pior caso é quando você atinge N / 2 x onde x é tal que 2 x = N
Noutros casos, N / 2 x onde x é tal que 2 x <N O valor mínimo de x pode ser 1, que é o melhor caso.
Agora, já que o pior caso é matematicamente quando o valor de
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Mais formalmente ⌊log 2 (N) + 1⌋