постоянное время, линейная временная сложность

#c #time-complexity

#c #временная сложность

Вопрос:

почему в первом коде временная сложность равна O (1), а во втором коде равна O (n):

 //first code:
int i = 0;
while(i < 11)
{
   i=i 1;
}

//second code:
int i =0;
while(i < n)
{
   i = i 1;
}
  

во втором коде n — это размер.

Комментарии:

1. Потому что первый код не зависит ни от какого размера входных данных.

2. Я уверен, вы бы согласились, что второй — O (n), а первый — O (11). Возможно, вы не знаете, что O (11) равно O (1). См. обозначение Big O .

3. @freakish да, я новичок в структуре данных, спасибо, братан

Ответ №1:

почему в первом коде временная сложность равна O (1)

Потому что он выполняет постоянное количество операций.

и второй код — O (n)

Потому что он выполняет ряд операций, которые линейно возрастают по отношению к n.

Ответ №2:

В первом коде цикл while всегда будет выполняться до тех пор, пока i не достигнет 11, поэтому сложность времени равна O (1).

Во втором коде время выполнения цикла зависит от значения n, поэтому, если вы задаете 11 для n, он будет выполняться до тех пор, пока i не достигнет 11, но если вы задаете 111, он будет выполняться до тех пор, пока i не достигнет 111, что увеличивает временную сложность кода в O (N) раз.