时间复杂度分析

《代码随想录》学习笔记,原链接:https://programmercarl.com/

1 时间复杂度O

2 不是复杂度越低越好

3 时间复杂度O的复杂表达式化简

4 O(logn)中的logn可以以任何数字为底,都统称logn


1 时间复杂度O

        严格来说,时间复杂度O是指算法运行时间的上界,即最坏情况。

        但通常来讲,时间复杂度O是指算法在一般情况下的运行时间。

2 不是复杂度越低越好

        如上所讲,时间复杂度O只是表示一般情况。

        实际运行时间与数据量大小有关系,因为算法的时间复杂度O默认是不带有数字系数的。

        如上图,虽然默认O(n²) > O(n),但是当数据量n小于20时,O(100n) > O(5n²)。

        但是,时间复杂度O是不带有数字系数的,因为默认算法的数据量很大,大到已经可以忽略掉系数产生的影响了。所以,基于数据量足够大的情况下,算法的时间复杂度O的排行:

O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n)

常数阶 < 对数阶 < 线性阶 < 线性对数阶 < 平方阶 < 立方阶 < 指数阶

        【注】如果是10^7、10^9这种大小,那么此时就不能忽略时间复杂度O的数字系数了

3 时间复杂度O的复杂表达式化简

        以O(2n² + 10n + 1000)为例:

  1. 去掉常数项,得到O(2n² + 100n);
  2. 去掉n前的数字系数,得到O(n² + n);
  3. 只保留最高项,最终得到O(n²)。

4 O(logn)中的logn可以以任何数字为底,都统称logn

        原因如下:

        由于对数函数存在换底公式,因此可以将基底换成任意数字。而且时间复杂度O不考虑数字系数,数字系数可以化简消掉,因此logn可以以任何数字为底,都统称logn。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值