简单算法时间复杂度

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)的算法。
简单算法时间复杂度_第1张图片

 

简单算法时间复杂度_第2张图片

 

简单算法时间复杂度_第3张图片

 简单算法时间复杂度_第4张图片

 简单算法时间复杂度_第5张图片

 简单算法时间复杂度_第6张图片

 资源来自Acwing算法基础课

你可能感兴趣的:(c++基础知识,算法,数据结构,c++)