估算程序的运行效率
来源:互联网 发布:ubuntu 14.04 iso下载 编辑:程序博客网 时间:2024/05/01 13:05
算法的时间复杂度
有事后统计法和事前统计法,事后统计法一般不使用。
事后统计法:
比较不同算法对同一组输入数据的运行处理时间
缺陷:
为了获得不同算法的运行时间必须编写相应程序, 运行时间严重依赖硬件以及运行时的环境因素,算法的测试数据的选取相当困难
事后统计法虽然直观,但是实施困难且缺陷多,一般不予考虑。
事前分析估算:
依据统计的方法对算法效率进行估算
影响算法效率的主要因素:
- 算法采用的策略和方法
- 问题的输入规模
- 编译器所产生的代码,C比java要快
- 计算机执行速度
简单估算,如下图所示:
判断一个算法的效率时,往往只需要关注操作数量的最高次项,其它次要项和常数项可以忽略。
大O表示法
算法效率严重依赖于操作(Operation)数量
在判断时首先关注操作数量的最高次项
操作数量的估算可以作为时间复杂度的估算
O(5) = O(1)
O(2n + 1) = O(2n) = O(n)
O(n2 + n + 1) = O(n^2)
O(3n3+1) = O(3n3) = O(n^3)
常见时间复杂度类型 和 大小关系:
他们之间的大小关系为:
上述各式中,n表示输入的数据的规模的大小。
在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度。
算法的空间复杂度
算法的空间复杂度通过计算算法的存储空间实现:
S(n) = O(f(n))
其中,n为问题规模,f(n)为在问题规模为n时所占用存储空间的函数。
大O表示法同样适用于算法的空间复杂度。
当算法执行时所需要的空间是常数时,空间复杂度为O(1)。
举例说明:
空间与时间的策略
多数情况下,算法执行时所用的时间更令人关注。
如果有必要,可以通过增加空间复杂度来降低时间复杂度,同理,也可以通过增加时间复杂度来降低空间复杂度。
在实现算法时,需要分析具体问题对执行时间和空间的要求。
- 估算程序的运行效率
- 程序运行的时间的估算
- 如何估算算法的效率
- 提高程序的运行效率
- 提高jsp程序的运行效率
- 提高程序运行效率的两个原则
- 提高程序运行效率的方法
- 提高程序运行效率的简单方法
- 提高程序运行效率的方法
- ABAP程序运行效率
- 测试程序运行效率
- 程序运行效率
- 让我们重视程序运行效率
- 提高PHP程序运行效率的四个小方法
- 利用render事件来提高程序的运行效率。
- render事件来提高程序的运行效率(as3.0)
- apk生成odex,提高程序的运行效率
- 利用render事件来提高as3程序的运行效率
- C语言与C++的基本区别
- 欢迎使用CSDN-markdown编辑器
- 单子设计模式(Singleton Pattern)
- EF+SQLSERVER控制并发下抢红包减余额(改进)
- Easypack之Alpine容器系列:Jenkins
- 估算程序的运行效率
- hdu5249--权值线段树
- js开放——封闭模式
- 磁盘分区
- 为什么我们现在很难在大陆使用google搜索引擎??
- SSH框架分析与总结
- 算法提高 简单加法
- [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)
- 读书笔记:人类简史第一章