算法时间复杂度的计算
2016-06-18 11:11
393 查看
一、概念
时间复杂度:总运算次数表达式中受到N的影响最大的那一项
二、概念解释
由于机器运行环境等的影响,代码的运算时间并不能准确的测算出来。但是,运算之间和算法中语句的执行次数是成正比的,所以可以用语句之行次数来表征时间复杂度的大小
三、计算方法
在计算算法的时间复杂度的时候,先找出基本操作,再根据算法语句计算出该操作的执行次数,最后确定执行次数的数量级
四、常见的算法复杂度:
1)常数阶:O(1)
2)对数阶:O(logN)
3)线性阶:O(N)
4)线性对数阶:O(N*logN)
5)平方阶:O(N^2)
五、计算的小Tips
1)找执行次数最多的语句,基本上就是内存循环的循环体(嵌套调用其实就是变身版的for循环语句)
2)只需要找执行次数的数量级,不需要特别准确的执行次数的数字
六、举个例子
O(log2(N))
很明显可以看出,这段代码的基本语句就是while循环的循环体
假设基本语句的执行次数是 f(n),那么就有 2^f(n) <= N,转换一下就有 f(n) <= log2(N), 取f(n)的最大值,于是就有f(n) = log2(N)
也就是说时间复杂度是 O(log2(N))
时间复杂度:总运算次数表达式中受到N的影响最大的那一项
二、概念解释
由于机器运行环境等的影响,代码的运算时间并不能准确的测算出来。但是,运算之间和算法中语句的执行次数是成正比的,所以可以用语句之行次数来表征时间复杂度的大小
三、计算方法
在计算算法的时间复杂度的时候,先找出基本操作,再根据算法语句计算出该操作的执行次数,最后确定执行次数的数量级
四、常见的算法复杂度:
1)常数阶:O(1)
2)对数阶:O(logN)
3)线性阶:O(N)
4)线性对数阶:O(N*logN)
5)平方阶:O(N^2)
五、计算的小Tips
1)找执行次数最多的语句,基本上就是内存循环的循环体(嵌套调用其实就是变身版的for循环语句)
2)只需要找执行次数的数量级,不需要特别准确的执行次数的数字
六、举个例子
O(log2(N))
public static void main(String[] args) { int i=0; int N = 100; while( i < N ){ i = i * 2; //基本语句 } }
很明显可以看出,这段代码的基本语句就是while循环的循环体
假设基本语句的执行次数是 f(n),那么就有 2^f(n) <= N,转换一下就有 f(n) <= log2(N), 取f(n)的最大值,于是就有f(n) = log2(N)
也就是说时间复杂度是 O(log2(N))
相关文章推荐
- qq悄悄话查看器-分析报告
- ios学习路线—iOS高级(SDWebImage)
- viewanno.m
- Memcache教程
- [思路]姿态算解
- Android仿简书、淘宝等APP View弹出效果
- 关于图片的PNG与JPG、JIF格式
- Android开发(51) 摄像头自动对焦。在OpenCV图像识别中连续拍照时自动对焦和拍照。
- Windows下搭建React Native Android开发环境
- Java 数据结构
- Hibernate 主配置文件详解
- 线性表
- jQuery解决$符号命名冲突
- Spark RDD编程(Python和Scala版本)
- MFC List Control LV COLUMN 和 LV ITEM 结构
- FastStone Capture 注册码 序列号
- Codeforces Round #358 (Div. 2)
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- DNS 原理入门
- Codeforces 679B Bear and Tower of Cubes 【贪心】