Вот запись в википедии
Если вы посмотрите на простой итеративный подход. Вы просто удаляете половину элементов для поиска, пока не найдете нужный элемент.
Вот объяснение того, как мы придумали формулу.
Скажем, сначала у вас есть N элементов, а затем в качестве первой попытки вы делаете «N / 2». Где N - сумма нижней границы и верхней границы. Первое значение времени N будет равно (L + H), где L - первый индекс (0), а H - последний индекс списка, который вы ищете. Если вам повезет, элемент, который вы попытаетесь найти, будет посередине [например, Вы ищете 18 в списке {16, 17, 18, 19, 20}, затем вычисляете ⌊ (0 + 4) / 2⌋ = 2, где 0 - нижняя граница (L - индекс первого элемента массива) и 4 - верхняя граница (H - индекс последнего элемента массива). В приведенном выше случае L = 0 и H = 4. Теперь 2 - это индекс найденного элемента 18, который вы ищете. Бинго! Ты нашел это.
Если бы случай был другим массивом {15,16,17,18,19}, но вы все еще искали 18, то вам не повезло, и вы бы сначала делали N / 2 (то есть ⌊ (0 + 4) / 2⌋ = 2 и затем поймите, что элемент 17 в индексе 2 - это не искомое число. Теперь вы знаете, что вам не нужно искать по крайней мере половину массива при следующей попытке поиска итеративным образом. усилия по поиску уменьшаются вдвое, так что, по сути, вы не ищите половину списка элементов, которые вы искали ранее, каждый раз, когда вы пытаетесь найти элемент, который вы не смогли найти в предыдущей попытке.
Так что худший случай будет
[N] / 2 + [(N / 2)] / 2 + [((N / 2) / 2)] / 2 .....
т.е.:
N / 2 1 + N / 2 2 + N / 2 3 + ..... + N / 2 x … ..
пока ... вы не закончили поиск, где элемент, который вы пытаетесь найти, находится в конце списка.
Это показывает худший случай, когда вы достигаете N / 2 x, где x таков, что 2 x = N
В других случаях N / 2 x, где x таков, что 2 x <N Минимальное значение x может быть 1, что является наилучшим случаем.
Теперь, поскольку математически наихудший случай - это когда значение
2 x = N
=> log 2 (2 x ) = log 2 (N)
=> x * log 2 (2) = log 2 (N)
=> x * 1 = log 2 (N)
=> Более формально ⌊log 2 (N) + 1⌋