法则1-for循环
一个for循环的运行时间至多是该for循环内部那些语句(包括测试)的运行时间乘以迭代的次数。
法则2-嵌套的for循环
从里向外分析这些循环。在以组嵌套循环内部的一条语句总的运行时间为该语句的运行时间诚意改组所有的for循环的大小的乘积。
例如,下列程序片段为O(N^2)--联想到冒泡排序就是双重for循环:
for(i=0;i<n;i++){
for(j=0;j<n;j++){
k++;
}
}
法则3-顺序语句
将各个语句的运行时间求和即可(这意味着,其中的最大值就是所得的运行时间;
例如,下面的程序片段先是花费O(N),接着是O(N^2),因此总量也是O(N^2):
for(i=0;i<n;i++)
a[i]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i]+=a[j]+i+j;
法则4-if/else语句
对于程序片段
if(condition)
S1;
else
S2;
一个if/else语句的运行时间从不超过判断的运行时间再加上S1和S2中运行时间长者的总的运行时间。