算法性能评估-时间复杂度

时间复杂度是用来评估算法性能的一个重要指标,有以下对应的关系。

1 < log(n) < n < nlog(n) < n^2 < n^3 < 2^n < n! < n^n

(1) 1 表示常数。

    程序执行的最大次数是可以估计到的,也就是说是一个常数。

(2) log(n)

    如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规模缩减成几分之一,一般就会出现这样的运行时间函数。在我们所关心的范围内,可以认为运行时间小于一个大的常数。对数的基数会影响这个常数,但改变不会太大:当N=1000时,如果基数是10,logN等于3;如果基数是2,logN约等于10.当N=1 00 000,logN只是前值的两倍。当N时原来的两倍,logN只增长了一个常数因子:仅当从N增长到N平方时,logN才会增长到原来的两倍。

(3) n

    线性时间复杂度,常用的一个循环,就是这样的复杂度。

(4) nlog(n)

    如果某个算法将问题分解成更小的子问题,独立地解决各个子问题,最后将结果综合起来,运行时间一般就是NlogN。当N=1 000 000时,NlogN大约是20 000 00020 000 000。当N增长到原来的两倍,运行时间超过原来的两倍,但超过不是太多。

(5) n^2

    常见的双层循环

(6) n^3

    常见的三层循环

(7) 2^n

    指数级的时间复杂度。

在排序算法中经常会比较n^2和nlog(n)的时间复杂度。在稍后的排序算法中,再详细分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值