【数据结构实战C++】4 算法复杂度概念

举报
CodeAllen 发表于 2021/10/30 22:06:46 2021/10/30
【摘要】 【数据结构实战C++】4 算法复杂度概念 作者 CodeAllen ,转载请注明出处 效率是工程中最关注的算法特性 算法效率的量度的几个方法 事后统计法 -比较不同算法对同一组输入数据的运行处理时间 -缺陷 为了获得不同算法的运行时间必须编写相应程序运行时间严重依赖硬件以及运行时的环境因素算法的测试数据的...

【数据结构实战C++】4 算法复杂度概念

作者 CodeAllen ,转载请注明出处


效率是工程中最关注的算法特性

算法效率的量度的几个方法

事后统计法
-比较不同算法对同一组输入数据的运行处理时间
-缺陷

  • 为了获得不同算法的运行时间必须编写相应程序
  • 运行时间严重依赖硬件以及运行时的环境因素
  • 算法的测试数据的选取很困难

事前分析估算
-依据统计的方法对算法效率进行估计
-影响算法效率的主要因素

  • 1,算法采用的策略和方法
  • 2,问题的输入规模
  • 3,编译器所产生的代码
  • 4,计算机的执行速度

算法效率的简单估计一
在这里插入图片描述

算法效率的简单估计二
在这里插入图片描述
算法效率的简单估计三
在这里插入图片描述
程序效率估算


  
  1. #include <iostream>
  2. using namespace std;
  3. int func(int a[], int len) // ==> (n*n + 2)
  4. {
  5. int ret = 0; // 1
  6. for(int i=0; i<len; i++)
  7. {
  8. for(int j=0; j<len; j++)
  9. {
  10. ret += a[i] * a[j]; // n * n
  11. }
  12. }
  13. return ret; // 1
  14. }
  15. int main()
  16. {
  17. int array[] = {1, 2, 3, 4, 5};
  18. cout << func(array, 5) << endl;
  19. return 0;
  20. }

上述程序关键部分的操作数量是n*n
三种求和算法中关键部分操作数量分别是2n, n ,1

不同算法操作数量的对比
在这里插入图片描述

算法操作数量对比一

在这里插入图片描述

算法操作数量对比二
在这里插入图片描述

算法操作数量对比三
在这里插入图片描述

小结
算法度量方法有 事后统计法和事前分析估算法
事后统计法不容易准确度量算法的效率
事前分析估算法通过操作数量度量算法效率
判断一个算法效率时只关注最高阶项就能得到结论

算法随着问题规模n的增大,会越来越优越于另一个算法,或者越来越差于另一个算法

文章来源: allen5g.blog.csdn.net,作者:CodeAllen的博客,版权归原作者所有,如需转载,请联系作者。

原文链接:allen5g.blog.csdn.net/article/details/89224648

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。