假设有以下三段程序:
复制代码
1A. {x++;s+=x;}
----->语句的执行频度为1
复制代码
1
2B. for(i=1;i<=n;i++) {x++;s+=x;}
------>语句的执行频度为n
复制代码
------->语句的执行频度为n^2
1
2
3C.for(i=1;i<=n;i++) for(j=1;j<=n;j++) {x++;s+=x;}
复制代码
1
2
3行号 执行次数 1 n+1 2 n*(n+1)
复制代码
13 n^2
该语句的总共的执行次数 f(n) 为 1、2、3行执行语句各条之和:
f(n) = n*(n+1)+n^2+n+1 = 2*n^2 + 2n + 1
上面的函数关系可以很明了的看出算法的执行次数
一般来讲随着问题规模(n)的增大,函数的增张速度较慢的算法为优;
我们经常看到符号“O”来表示数量级的概念;
就是说:上面的函数可以表示成T(n) = O(f(n)) = O(n^2)
含义就是说n 较大时算法的执行时间和n^2 成正比。
T(n)----表示算法的时间复杂度;
最后
以上就是香蕉小笼包最近收集整理的关于算法分析的全部内容,更多相关算法分析内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复