2014-01-17 4 views
-1

У меня возникли некоторые проблемы подсчета шагов для этого алгоритма, состоящей из следующих вложенных циклов:Возникают проблемы измерения времени работы алгоритма путем подсчета шагов

for(int i=1; i <= N; i++) 
     for(int j=1; j <= i; j++) 
      for(int k=1; k <= i*log(j); k++) 
        x=i+j+k; 

мне нужно рассчитать время автономной при п = 10, 20 , 40, 100, 200, 400, 1000, 2000, 4000, 10000, любая помощь очень ценится

+0

Просьба конкретно указать, какие у вас проблемы с его вычислением. Если это проблема в теоретической информатике, пожалуйста, не спрашивайте о StackOverflow, этот сайт только программирует! –

+0

Вы ищете математическую формулу в качестве ответа? – Srini

ответ

1

Это подсчитывает количество "шагов" в ваших петель:

int steps = 0; 
for(int i=1; i <= N; i++) { 
    for(int j=1; j <= i; j++) { 
     for(int k=1; k <= i*log(j); k++) { 
       steps++; 
       x=i+j+k; 
     } 
    } 
} 

Это один действительно поройесли это то, что вы хотите:

time_t start = time(0); 
for(int i=1; i <= N; i++) 
    for(int j=1; j <= i; j++) 
     for(int k=1; k <= i*log(j); k++) 
      x=i+j+k; 
time_t end = time(0); 

time_t timeTaken = end - start; 

Если вам нужна более высокая точность, искать высокоточный часы

+3

Я думаю, что один «шаг ++» внутри самого внутреннего цикла достаточно для подсчета полных шагов. – Srini

+0

Оба результата (один в комментарии и один в ответе) будут асимптотически иметь порядок O (n log n). –

+0

@srini Oh lol! Вы совершенно правы. Я сделал этот ответ поздно вечером, так что, возможно, это объясняет. Хороший улов! – BWG

1

Просто установите значение N 20 (или другие значения, которые необходимо) внутри вашей программы и Дон» t использовать любые функции ввода/вывода (cout/cin), а после выполнения циклов for программа закончится, и cmd сообщит с указанием времени, которое требуется для выполнения.

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