2016-07-29 3 views
0
for(i=n/2;i<=n;i++) { 
    for(j=1;j<= n/2;j++) { 
     for(k=1;k<=n;k=k*2) { 
      statement; 
     } 
    } 
} 

что такое сложность для этого кода, я думаю, что это будет в журнале с n^2, но я не могу найти его, пожалуйста, ответьте мне.Какова временная сложность кода ниже вложенного цикла?

+0

Возможная Дубликат [Как найти временную сложность алгоритма] (http://stackoverflow.com/questions/11032015/how- to-find-time-complex-of-an-algorithm) –

ответ

0
for(i=n/2;i<=n;i++) {   // it is O(n) 
    for(j=1;j<= n/2;j++) { // it is O(n) 
     for(k=1;k<=n;k=k*2) { // it is O(log n) 
      statement; 
     } 
    } 
} 

так O (N^2 * (журнал п))

+0

Я не понимал, как входит log n? Вы можете это объяснить? –

+0

Длинный ответ вы можете найти, например, здесь http://stackoverflow.com/questions/2307283/what-does-olog-n-mean-exactly?rq=1 Вкратце, здесь сложность log2 n. Поэтому, если n растет 8 раз, вам нужно (log2 8) больше времени (только в последнем цикле), т. Е. Вычисление занимает в 3 раза больше. – dmitry

+0

нормально .. так сильно .. –

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