2013-10-13 3 views
1

У меня возникают проблемы вычисления времени сложности для этих циклов:высчитывает время сложность вложенных для петель

for(int i=0; i<len; i++){ 
    countOne++; 
    for(int j=i/2; j<len; j++){ 
     countTwo++; 
     for(int k=i/2; k<len; k++){ 
      countThree++; 
     } 
    } 
} 

Я не понимаю, как вычислить временную сложность для 2 внутрипартийных самых петель.

+3

Что именно вы имеете в виду под «вычислить время работы»? –

+1

Я думаю, вы хотите рассчитать сложность 'Big O'? правильно ? –

+0

есть, большой O время работы. Я хотел бы узнать время работы каждой строки, в частности, две внутренние петли. Например, я считаю, что первая для цикла работает n + 1 раз. –

ответ

3

Это звучит как вопрос большого О. Но вы должны указать это в будущем.

  • countOne - прирост len раз.
  • За каждые i, countTwo - прирост len-i/2 раз. i идет от 0 до len-1, поэтому countTwo увеличивается между len/2 и len (или O (длина)) раз в i, или O (LEN) в общей сложности.
  • Аналогичная история для countThree, она прирастает O (len) раз.

Поэтому весь алгоритм O (len).

0

Вы проследовать методично Сигма нотации:

enter image description here

Смежные вопросы