Я предлагаю вам прочитать большие обозначения O на других веб-сайтах, которые хорошо это объясняют, вместо того, чтобы спрашивать о StackOverflow.
Отказ от ответственности - это очень упрощенное объяснение, для общего объяснения вы должны посмотреть на большое O определение.
Что касается того, почему бинарный поиск O(log n)
. Это сводится к количеству операций, которые вы выполняете. Для массивов длин необходимо выполнить:
len: 0, ops: 1
len: 1, ops: 1
len: 2, ops: 2
len: 3, ops: 2
len: 4, ops: 3
len: 5, ops: 3
len: 6, ops: 3
len: 7, ops: 3
len: 8, ops: 4
...
len: 16, ops: 5
...
В каждой итерации вы можете выполнять 1
операцию и повторите двоичный поиск по массиву с длиной, равной половине размера. Вот откуда взялся логарифм. Для массива длиной 2^n
требуется максимум log_2 n
операций.