最近,在讀《資料結構與算法分析,C語言描述》。
第二章,算法分析,講述了,運作時間計算方法。是我見過,講的最好的了。
一個簡單例子。
計算立方和。
int
Sum( int N)
{
int i, PartialSum;
PartialSum = 0;
for( i = 1; i <= N; i++)
PartialSum += i * i * i;
return PartialSum;
}
關鍵分析:四則運算,或者任意一個操作,每次占用一個時間單元。
第1行和第4行,各占一個時間單元。
第3行,每次執行,占4個時間單元(2次乘法,1次加法,1次指派),執行N次,就會占用4N個時間單元。
第2行,初始化占1個,比較占N+1個,自增占N個,總共2N+2個時間單元。
總量是:6N+4
是以,我們說這個函數是 O(N) 。
是以:
雙重for循環,是O(N^2)
3重for循環,是O(N^3)
------------------