После первого прохода вы знаете, в какой «половине» будет k-й элемент. Теперь вы повторяете процесс для этой «половины» и т. Д.
Таким образом, в среднем случае в первой итерации вы делаете n шагов, во вторых n / 2 шага, затем n / 4 шага и так далее. В качестве обратной части расчета огибающей предположим, что n = 2 ** k. Общее количество шагов будет
2**k + 2**k/2 + 2**k/4 + ... = 2**k + 2**(k-1) + 2**(k-2) + ... + 2 + 1
= 2**(k+1) - 1
= 2n - 1
Итак, алгоритм O (2n - 1) = O (n).