算法时间复杂度的计算

来源:互联网 发布:淘宝客服打字慢可以吗 编辑:程序博客网 时间:2024/06/08 05:39


一、概念

时间复杂度:总运算次数表达式中受到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))











0 0
原创粉丝点击