Обозначение Big O не о том, сколько именно времени требуется для завершения операции.Это (очень грубая) оценка того, как различные алгоритмы сравниваются асимптотически с изменением размеров входных данных, выраженных в общих «шагах».То есть «сколько шагов выполняет мой алгоритм для ввода N элементов?».
Сказав это, обратите внимание, что в обозначениях Big O константы игнорируются.Следовательно, цикл по N элементам, выполняющим 100 вычислений на каждой итерации, будет равен 100 * N, но все равно будет равен O (N).Точно так же цикл, выполняющий 10000 вычислений, все равно будет O (N).
Следовательно, в вашем примере, если у вас есть что-то вроде:
for(int i = 0; i < 1000; i++)
for(int j = 0; j < N; j++)
// computations
, это будет 1000 * N = O (N).
Big O - это просто упрощенная оценка времени выполнения алгоритма, которая в основном говорит, что если у алгоритма есть время выполнения O (N), а у другого есть O (N ^ 2), то первый будет в конечном итоге будет быстрее второго для некоторого значения N. Эта оценка, конечно, не учитывает ничего, связанного с базовой платформой, например, скорость процессора, кеширование, узкие места ввода-вывода и т. Д.