O (1) означает, что временная сложность алгоритма всегда постоянна.
Допустим, у нас есть этот алгоритм (в C):
void doSomething(int[] n)
{
int x = n[0]; // This line is accessing an array position, so it is time consuming.
int y = n[1]; // Same here.
return x + y;
}
Я игнорирую тот факт, что массивможет иметь менее 2 позиций, просто для простоты.
Если мы посчитаем 2 самые дорогие линии, у нас будет общее время 2.
2 = O (1), потому что:
2 <= c * 1, если c = 2, для каждого n> 1
Если у нас есть этот код:
public void doNothing(){}
И мы считаем этоимея 0 экспансивных линий, нет разницы в том, что они имеют O (0) O (1) или O (1000), потому что для каждой из этих функций мы можем доказать одну и ту же теорему.
Обычно, если для выполнения алгоритма требуется постоянное количество шагов, мы говорим, что он имеет временную сложность O (1).
Полагаю, это просто соглашение, поскольку вы можете использовать любое постоянное число для представления функции внутриO ().