认识时间复杂度

常数的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。

时间复杂度:常数操作量的指标(常用O来表示)

具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(n),则时间复杂度为O(f(n));

eg1:若时间复杂度为aN^2+N+1

则时间复杂度为O(N^2)

eg2:二分法的时间复杂度为O(log2N)

注:一次砍一半能砍log2N次

eg3:如果时间复杂度分别为O(N^2)和O(N),则选O(N)(先看幂次,选幂次小的,再看系数,选系数小的)

eg4:一个有序数组A,另一个无序数组B,请打印B中所有不在A中的数(A数组长度为N,B数组长度为M)

①对于数组B中的每个数都在数组A中通过遍历的方式找

则时间复杂度为O(N*M)

②对于B中每个数都在A中通过二分的方式找

则时间复杂度为O(M*log2N)

③先把B排序,然后用类似外排的方式打印出所有在A中出现的数

则时间复杂度为O(M*log2M)+O(N+M)    (M*log3M为排序时间最短的算法)

注:由N和M实际大小才能确定2和3哪个更好

      如果A数组很短,B数组很长则算法2更好

外排:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值