天天看點

C語言分析算法的時間複雜度,算法——時間複雜度分析方法

最近,在讀《資料結構與算法分析,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)

------------------