資料結構與演算法之時間複雜度

2021-09-26 16:36:34 字數 651 閱讀 9333

一般情況下,演算法中的基本操作語句的重複執行次數是問題規模n的某個函式,用t(n)表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n) / f(n) 的極限值為不等於零的常數,則稱f(n)是t(n)的同數量級函式。記作 t(n)=o( f(n) ),稱o( f(n) ) 為演算法的漸進時間複雜度,簡稱時間複雜度。

t(n) 不同,但時間複雜度可能相同。 如:t(n)=n²+7n+6 與 t(n)=3n²+2n+2 它們的t(n) 不同,但時間複雜度相同,都為o(n²)。

計算時間複雜度的方法:

常數階o(1)

對數階o(log2n)

線性階o(n)

線性對數階o(nlog2n)

平方階o(n^2)

立方階o(n^3)

k次方階o(n^k)

指數階o(2^n)

常見的演算法時間複雜度由小到大依次為:ο(1)<ο(log2n)<ο(n)<ο(nlog2n)<ο(n2)<ο(n3)< ο(nk) <ο(2n),隨著問題規模n的不斷增大,上述時間複雜度不斷增大,演算法的執行效率越低。

從下圖中可以看出,我們應該盡可能避免使用指數階的演算法:

資料結構與演算法之時間複雜度

度量乙個程式 演算法 執行時間的兩種方法 1 事後統計的方法 這種方法可行,但是有兩個問題 一是要想對設計的演算法的執行效能進行評測,需要實際執行該程式 二是所得時間的統計量依賴於計算機的硬體 軟體等環境因素,這種方式,要在同一臺計算機的相同狀態下執行,才能比較那個演算法速度更快。2 事前估算的方法...

資料結構和演算法之時間複雜度

2.空間複雜度 學習資料結構和演算法,並不是為了死記硬背幾個知識點。我們的目的是建立時間複雜度 空間複雜度意識,寫出高質量的 能夠設計基礎架構,提公升程式設計技能,訓練邏輯思維,積攢人生經驗,以此獲得工作回報,實現你的價值,完善你的人生。掌握了資料結構與演算法,你看待問題的深度,解決問題的角度就會完...

大話資料結構 之時間複雜度

程式猿可以讓步,卻不可以退縮,可以羞澀,卻不可以軟弱,總之,程式設計師必須是勇敢的。時間複雜度序言 當前兩天我寫完 大話資料結構 的序言的時候,我就在想,我該如何把從大話資料結構中對應用開發人員有用的知識提煉出來?我是該如同課本一樣把所有的知識羅列個遍?還是如何如何,我想如果我把所有的東西都羅列出來...