法則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中運行時間長者的總的運行時間。