时间复杂度

时间复杂度表示:O(里面填时间复杂度)

各种常见的时间复杂度(n为数据规模)

O(1)常量时间复杂度

int a,b;
cin>>a>>b;
cout<<a+b;

O(n)线性时间复杂度

int a,b;
int ans=1;
cin>>a>>b;
for(int i=1;i<=b;i++) ans*=a;
cout<<ans;

还有O(n²),O(nlogn),O(√n),O(logn),O(n³)等时间复杂度。

各种数据范围考虑的算法

n<=10:考虑使用O(n!)算法,暴力可过

n<=20:考虑使用O(2^n) 算法,例如二进制枚举

n<=100:考虑使用O(n^3)算法,例如暴力枚举求1~100内任意三个数的乘积

n<=1000:考虑使用O(n^2)算法,例如选择、冒泡、插入排序

n<=10000:考虑使用O(n√n)算法(某些性能好的判题机可以用O(n^2)),例如对n以内的数字进行质因数分解

n<=1000000:考虑使用O(nlogn)算法,比如归并排序

n<=10^7:考虑使用O(n)算法,比如线性筛

n<=10^12:考虑使用O(√n)算法,比如分解质因数

n<=2^(10^7):考虑使用O(logn)算法,比如二分查找(O(logn)这个数据范围太大了,实际上最多到2^18,不是二分不行,是无符号long long最多只能2^18,高精度时间复杂度就上去了)

n为任意:考虑O(1),比如直接输出这个数字

注意:常量是O(1),这个常量有时候大有时候小,10^3 O(n^3)常量够小也能1s过

请在评论区指出错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值