Необходимо определить время выполнения следующего кода.
Для следующего фрагмента программы приведем анализ времени выполнения Big-O.
Я попытался добавить числа к переменной, чтобы увидеть, сколько времени она займет и как ее упростить. Возникли трудности с частью I * I. Я понимаю, что второй цикл будет выполняться O (n) раз, но изо всех сил пытаюсь понять второй. Я знаю, что он будет проходить через (i ^ 2) время, давая ему время выполнения (i ^ 2), но делает ли это, что целые программы работают время n + (n ^ 2) или из-за упрощения, потому что я просто сохраняю высокий порядок Количество (N ^ 2) или я совершенно не прав, и я должен е по-разному. Я полагаю, что замедление t, if Statement и t ++ - это O (1) и они могут пренебречь.
Подводя итог, я думаю, что я путаю меня с тем, как мне следует обращаться с ними и как (i ^ 2) следует обращаться в общем времени выполнения. Поскольку я знаю, что встроенные циклы for имеют типичное время O (n ^ 2).
int t = 0; //O(1)
for(int i=1; i <= n; i++) //O(n)
for(int j=1; j <= i*i; j++) //O(i^2)
if(j % i == 0) //O(1)
t++; //O(1)