算法運行時間計算一般法則

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章