这个双循环的复杂性是什么?
发布时间:2020-12-16 07:07:31 所属栏目:百科 来源:网络整理
导读:#include stdio.hint main() { int N = 32; /* for example */ int sum = 0; for (int i = 1; i = N*N; i = i*3) for (int j = 1; j = i; j++) sum++; printf("Sum = %dn",sum); return 0;} 外循环是奇数. 如果检查只有N(而不是N * N)那么我每次增加3乘以意
#include <stdio.h> int main() { int N = 32; /* for example */ int sum = 0; for (int i = 1; i <= N*N; i = i*3) for (int j = 1; j <= i; j++) sum++; printf("Sum = %dn",sum); return 0; } 外循环是奇数. 如果检查只有N(而不是N * N)那么我每次增加3乘以意味着外循环需要N / 3次N次迭代? 但是检查是N * N或N ^ 2所以暗示将增长 N^2 / 3 ??? (n squared divided by 3) Is that correct? 如果我玩N的不同值,比如每次加倍,i循环(单独)不会增长太多.像对数增长一样).我将如何用数学方法表达这个? 那么你如何看待内环?如果它每次增加到i,我怎样才能以数学方式表达?如何将内循环与N相关联? 我想a)能够用N来表示数学上的“复杂性”.然后,下一步,b)是使用big-O表示法. 对此感到困惑.任何帮助将非常感激. 解决方法
我认为外部循环执行log3(N * N)次,因为每次乘以3使得你有1,3,9 ……并且N * N执行的对数基数3达到N * N.
内部循环最多执行N * N次,因此一切都变为log3(N * N)* N * N. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |