時間複雜度 解析

2021-10-07 04:02:09 字數 1375 閱讀 1662

通常是用 大 o (big o) 表示法,來表示時間最壞複雜度

公式t(n) = o(f(n)) ,f(n) 既函式總執行次數

推導大o階方法 :

1. 用常數 1 取代執行時間中的所有加法常數

2. 在修改後的執行次數函式中,只保留最高端

3. 如果最高端存在且不是 1 ,則去除與這個項相乘的常數

常數階__o(1)

示例:

int sum = 0 ,n=100;

sum = n+1

printf("&d",sum)

// 共執行 3 次

// 根據 大o 推導法,把常數換成 1 ,則結果是 o(1)

線性階__o(n)

示例:

for( int i = 0; i < n; i++)

//共執行 n 次

//根據大o推導法,只取最高端。 所以是 o(n)

對數階__o( logn )

示例:

for( int i = 1; i < n ; i++ )

// 此時 i 以自身倍數在倍增

// 則總執行次數 = 1 + 3 *(log2(n))

// 根據大o推導法。去除常數,保留最** o( logn )

平方階__o( n^2 )

for( int i = 0; i < n ; i++ )

}//總執行次數 = 外迴圈 1 + 2n + 內迴圈 n * (1 + 3n)

//可得 1 + 2n + n * (1 + 3n )

//可得 1 + 2n + n + 3n^2

//根據大o 去除常數,保留最高端既 o(n^2)

nlogn階

for( int i = 1; i < n ; i *= 2 )		}

//執行總次數 = 外迴圈 1 + 2 * log2(n) + 內迴圈 log(n) * (1 + 3n)

//得 1 + 2 * log2(n) + log2(n) * (1 + 3n)

//得 1 + 3log2(n) + 3 * nlog2(n)

//根據大o .則 = o(nlogn)

立方階 指數階 階乘階,幾乎不用,暫不討論。

時間複雜度耗費時間從小到大依次排列:

o(1) < o(log(n)) < o(n) < o(nlogn) < o(n^2 < o(n^3) < o(2^n) < o(n! < o(n^n))

時間複雜度解析

演算法,作為乙個programmer應該再清楚不過。乙個演算法的好壞是依靠什麼標準 來評判的呢?那就是時間複雜度和空間複雜度。今天就來 下時間複雜度,什麼是時間複雜度呢?在電腦科學中,時間複雜性,又稱時間複雜度,演算法的時間複雜度是乙個函式,它定性描述該演算法的執行時間。這是乙個代表演算法輸入值的字...

解析時間複雜度和空間複雜度

說明 時間複雜度和空間複雜度從字面上理解 時間複雜度 時間複雜度的表示方法 一般用大o符號表示法表示,o f n n是影響複雜度變化的因子,f n 是複雜度的演算法。這個表示方法不是具體的運算時間,而是 執行時間的增長變化趨勢。隨著n的增長,演算法的執行運算時間增長速度記為f n 常見的時間複雜度量...

時間複雜度深度解析

從字面解析,就是乙個演算法執行的時間,很多小夥伴都想到了把演算法程式執行一遍,那麼消耗的時間就自然而然的知道了,這種方式是可以的,但是有很多的弊端,很容易受到執行環境的影響,效能的高低相差很大,對使用的資料規模也有關係。所以還是不能完整的去執行它。這樣一種通用的方式就誕生了,大o符號表示法 在 大o...