複雜度的詳細解釋

2021-07-27 04:54:13 字數 1427 閱讀 7193

因為工作的原因,重新拾起了資料結構,畢竟它的地位對於一名程式設計師來說舉足輕重,對於即將畢業的自己,也是決定把所有模糊的定義弄明白,為以後打好基礎。所以寫下人生中第一篇原創部落格,作為紀念。

複雜度分為兩種,1)時間複雜度;2)空間複雜度;

一.演算法時間複雜度

1.定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模 n 的函式,進而分析t(n)隨 n 的變化情況並確定t(n)的數量級。演算法的時間複雜度,也就是演算法      的時間度量,記作:t(n)=o(f(n))。它表示歲問題規模 n 的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的監禁時間複雜度,簡稱為時間                         複雜度。 其中f(n)的增長率相同,成為演算法的監禁時間複雜度,簡稱時間複雜度。其中f(n)是問題規模 n 的某個函式。 

2.大o記法:

用大寫的o()來體現演算法時間複雜度的記法,我們稱之為大o記法。

常數階:o(1);

線性階:o(n);

平方階:o(n^2);

對數階:o(log m n);

3.推導大o階方法:

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

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

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

得到的結果就是大o階。

使用上述三條進行推導:1:沒有加法的常數,所以不用考慮;

2:只保留最高端,因此保留n^2/2;

3:去除這個項相乘的常數,也就是去除1/2,最終這段**的時間複雜度為o(n^2)。

常見的時間複雜度: 

執行次數 

階  數

非正式術語 

12o(1)

常數階2n+3

o(n)

線性階3n^2+2n+1

o(n2)

平方階5log2 n+20

o(logn)

對數階n+3nlog2+1 

o(nlogn)

nlogn階

n^2+n+4

o(n^2)

立方階2^n

o(2^n)

指數階

o(1)o(n3)

<

o(2^n)

<

o(n!)

<

o(n^n)

時間複雜度分為:1)平均時間複雜度;2)最壞時間複雜度;

二.演算法的空間複雜度

演算法的空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於 n 所佔儲存空間的函式。

快排時間複雜度詳細解釋

1 快速排序遞迴版 def quick sort arr if len arr 2 return arr 這是基線條件 else a arr 0 smaller i for i in arr 1 if i a bigger i for i in arr 1 if i a return quick s...

演算法的時間複雜度解釋

演算法的時間複雜度分析有兩種方式。一種方式是計算演算法具體的執行時間,最終根據這個時間的長短評價演算法的優劣。這種估計方法比較簡單易 於操作,但是這種方法有乙個缺點 估計時間會隨著計算機的不同而產生變化 不同計算機的配置 同乙個 計算機所處環境不同都會影響 另一種方式是只記錄演算法的關鍵操作。例如這...

時間複雜度的詳細介紹

一 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...