时间复杂度分析
- 基本操作,即只有常数项,认为其时间复杂度为O(1)
- 顺序结构,时间复杂度按加法进行计算
- 循环结构,时间复杂度按乘法进行计算,循环次数乘以循环体代码的复杂度(例:for,while)
- 分支结构,时间复杂度取最大值(例:switch,if-else)
- 判断一个算法的效率时,往往只需要关注操作数量加法项中的最高次项,其它次要项和常数项可以忽略
- 在没有特殊说明时,我们所分析的算法的时间复杂度都是指最坏时间复杂度
常见时间复杂度
O(1)<O(logn)<O(n)<(nlogn)
<O(n2)<O(n3)<O(2n)<O(n!)

一般我们都是将代码的时间复杂度控制在O(logn),O(n),O(nlogn),O(n2)这四个范围值内
例题
给定N个整数的序列{A1,A2,…,AN},求函数f(i,j)=max{0,∑k=ijAk}
算法1
T(N)=n∗n∗(1+n∗(1+max(1,0)))=2n3+n2=O(n3)

算法2
T(N)=n∗(1+n∗(1+max(1,0)))=2n2+n=O(n2)

算法3

算法4
T(N)=n∗(1+max(1,0))=2n=O(n)
