Краткий ответ : Разделение списка выполняется в O (n) , но, поскольку список каждый раз сокращается пополам, это означает, что n во второй итерации - половина предыдущей.
Если нарезка до k занимает ровно k «инструкции», то это означает, что алгоритм сводится ксумма n / 2 + n / 4 + n / 8 + ... + 1 или более формальная:
log n
--- n
\ ---
/ i
--- 2
i=1
Выше приведено геометрическое serie [wiki] равно:
n/2 n/2
------- - 1 = --- - 1 = n - 1
1 - 1/2 1/2
Таким образом, общее количество инструкций составляет O (n) .