程序的效率
问题:
如果两个算法都符合功能性需求,那工程中最关心的其他特性是什么?如何比较评判?
性价比(效率)是工程中最关注的的算法附加特性!
算法效率的度量
1.事后统计法:比较不同算法对同一组输入数据的处理时间。
缺陷:(1)为了获得不同算法必须编写相应程序
(2)运行时间严重依赖硬件以及运行时的环境因素
(3)算法的测试数据选取困难
2.事前分析估算:依据统计的方法对数据进行估算
影响算法效率的主要因素:
(1)算法采用的策略和方法
(2)问题的输入规模
(3)编译器所产生的代码
(4)计算机执行速度
int func(int a[], int len) // ==> (n*n + 2)
{
int ret = 0; // 1
for(int i=0; i<len; i++)
{
for(int j=0; j<len; j++)
{
ret += a[i] * a[j]; // n * n
}
}
return ret; // 1
}
程序效率的关键部分为n^2,随着n的不断增大,操作的数量很大程度的增大,不同的程序在这时候效率的差距就体现出来了。
总结:
事前分析估算法通过操作数量来判断程序效率。
判断一个算法效率是只需关注最高阶就能得出结论
如:2n+1 与 n^2+1 只需比较 n与n^2。
原文地址:http://blog.51cto.com/13563176/2060259
时间: 2024-11-15 14:25:07