简单算法时间复杂度

ACM竞赛中,时间限制通常为1秒或2秒,对应的时间复杂度在10^7到10^8次操作之间。时间复杂度用O表示,如O(1)、O(logn)、O(n)、O(nlogn)和O(n^2)。算法设计应根据数据范围选择合适复杂度,如数据范围是10^7,则考虑O(n)、O(logn)或O(1)的算法;范围是1000,则O(n^2)可接受。
摘要由CSDN通过智能技术生成

1.一般ACM的时间限制是1秒或2秒,c++代码执行时一秒的操作次数大概为10的7次方到10的8次方左右。

2.若时间限制是1s, 则时间复杂度应该在10^7 ~ 10^8
若时间限制是0.1s,则时间复杂度应该在10^6 ~ 10^7

时间复杂度通常用O表示,例如:

O(1)计算出答案的时间是一个常数

O(logn)计算出答案的时间随着问题规模的增大是按照log规律增大的(由于log的底数对结果影响很小,所以忽略底数,统称log) O(n)计算出答案的时间随着问题规模的增大是线性增大的

O(nlogn)计算出答案的时间随着问题规模的增大是按照nlog的规律增大的

O(n2)表示能在计算出答案的时间随着问题规模的增大是按照平方的规律增大的

计算复杂度的时候可能一个代码的各个部分的复杂度不一样,例如一个程序计算出答案的时间是2n3 + n + 1,计算它的复杂度时只关注影响最大的部分,即复杂度为O(n3)

通常情况下,算法的设计是从数据范围出发,根据数据范围里面最坏的情况确定用什么复杂度的算法再去思考如何解决问题。

例如,数据范围是107范围,那么你就只能从O(n)、O(logn)、O(1)的算法中选择

如果数据范围是1000,则首先考虑O(n2)的算法。

 

 

 

 

 

 资源来自Acwing算法基础课

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值