您的位置:首页 > 其它

算法时间复杂度的计算

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))

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))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: