資料結構(演算法的時間複雜度和空間複雜度)

2021-07-24 04:22:31 字數 1069 閱讀 8388

時間複雜度

時間複雜度和空間複雜度是演算法效率的度量方法。也就是說,乙個好的演算法取決於它的時間複雜度和空間複雜度。

函式的漸近增長:給定兩個函式f(n)和g(n),如果存在乙個整數n,使得對於所有的n>n,f(n)總是比g(n)大。那麼,我們說f(n)的增長漸近快於g(n)。

翻譯過來就是:如果存在乙個臨界值,使得f(n)>g(n)永遠成立,那麼我們就認為」f(n)的增長漸近快於g(n)」。

定義

時間複雜度的定義:在進行演算法分析時,語句總的執行次數t(n)是關於問題規模n的函式,進而分析t(n)隨n的變化情況並確定t(n)的數量級。

演算法的時間複雜度,也就是演算法的時間量度,記作:t(n)= o(f(n))。

它表示隨問題規模n的增大,演算法執行時間的增長率和f(n)的增長率相同,稱作演算法的漸近時間複雜度,簡稱為時間複雜度。其中f(n)是問題規模n的某個函式。

時間複雜度計算方法

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

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

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

最後,得到的最後結果就是時間複雜度。

常見的時間複雜度

按數量級遞增排列,常見的時間複雜度有:

常數階o(1),對數階o( log n ),線性階o(n),線性對數階o(nlog2n),平方階o(n^2),立方階o(n^3),…,k次方階o(n^k),指數階o(2^n)。隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

也就是:

演算法的空間複雜度

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

在 程式開發中,我們所指的複雜度不做特別說明的情況下,就是指時間複雜度。現在的硬體發展速度之快使得我們完全可以不用考慮演算法所佔的記憶體,通常都是用空間 換取時間。加之演算法的空間複雜度比較難算,所以,無論是在考試中還是在專案開發中,我們都側重於時間複雜度。

資料結構和演算法(時間複雜度和空間複雜度)

測試演算法效率 即運算時間 事後統計方法 主要通過設計好的測試程式和資料,利用計算機計時器對不同演算法編制的程式的執行時間進行比較,從而確定演算法效率的高低 事前分析估算方法 比上個方法更優 在計算機編寫程式前,依據統計方法對演算法進行估算 乙個高階語言在計算機上執行時所消耗的時間取決於下列因素 1...

資料結構時間複雜度和空間複雜度

1 演算法o n 關注n的階數,當數十分大的時候,常數可以忽略。o n 又稱為大o記法。2 t n o f n 隨著n變化而變化,f n 是某個函式,執行的次數等於時間,一般情況下,t n 增長最慢的演算法最優。4 推到o n 1,用1取代時間中所有加法常數 哪些可以忽略 2,在修改後的執行函式中,...

資料結構 時間複雜度和空間複雜度

通常我們衡量乙個演算法的複雜度時,會有兩種演算法效率分析方式 第一種是時間效率,第二種是空間效率。時間效率被稱為時間複雜度,而空間效率被稱作空間複雜度。時間複雜度主要衡量的是乙個演算法的執行速度,空間複雜度主要衡量一乙個演算法所需要的額外空間,在計算機發展的早期,計算機的儲存容量很小。所以對空間複雜...