Важной особенностью нотации Big (O) является то, что она исключает «константы».Цель состоит в том, чтобы определить тренд по мере того, как размер входных данных растет без учета конкретных чисел.
Думайте об этом как об определении кривой на графике, где вы не знаете диапазоны чисел xи оси y.
Итак, в вашем коде, даже если вы пропускаете большинство значений в диапазоне n
для каждой итерации каждого цикла, это делается с постоянной скоростью.Поэтому независимо от того, сколько вы на самом деле пропускаете, это все равно масштабируется относительно n^2
.
. Не имеет значения, рассчитали ли вы что-либо из следующего:
1/4 * n^2
0.0000001 * n^2
(1/4 * n)^2
(0.0000001 * n)^2
1000000 + n^2
n^2 + 10000000 * n
В Big O,все они эквивалентны O(n^2)
.Дело в том, что как только n
становится большим достаточно (что бы это ни было), все члены более низкого порядка и постоянные факторы становятся неактуальными в «большой картине».
( Стоит подчеркнуть, что именно поэтому для небольших входов следует опасаться слишком сильной зависимости от Big O. Именно тогда постоянные накладные расходы могут по-прежнему оказывать большое влияние. )