【資料結構】-時間複雜度和空間複雜度
在閱讀這篇文章之前,建議大家先對 【資料結構】-巨集觀認識進行閱讀,對資料結構有一個巨集觀的瞭解。我們使用時間複雜度和空間複雜度對演算法進行分析。
時間複雜度
演算法包含的計算量。
大O表示法,表示時間複雜度,不考慮具體的執行時間,只給出演算法在問題規模n的某個函式。
時間複雜度常見的階數有常數階(演算法的時間複雜度與輸入規模n無關),對數階,線性階,多項式階,指數階。通常認為,時間複雜度具有指數階的演算法是實際不可計算的,階數低於平方階的演算法是高效率的。
一個演算法對具有相同輸入資料量的不同輸入資料,時間複雜度可能會不同,使用最壞時間複雜度和平均時間複雜度來度量演算法的效能。
最壞時間複雜度:對相同輸入資料量的不同輸入資料,演算法時間用量的最大值。
平均時間複雜度:對所有相同輸入資料量的各種不同輸入資料,演算法時間用量的平均值。
空間複雜度
空間複雜度是一個演算法在執行過程中臨時佔用儲存空間大小的度量。
一個演算法在執行期間所需要的儲存空間量包括三個部分:
程式程式碼所佔用的空間
輸入資料所佔用的空間
輔助變數所佔用的空間
輸入資料所佔空間由問題決定,不隨演算法的不同而改變。
程式程式碼所佔空間對不同的演算法也不會有數量級的差別。
輔助變數所佔空間由演算法決定,有的佔用隨問題規模n增大而增大的臨時空間,有的不隨問題的規模改變。
在估算演算法空間複雜度時,只需要分析輔助變數所佔用的空間。
總結
掌握時間複雜度和空間複雜度的分析重點。時間複雜度分析演算法的計算量,而空間複雜度分析演算法執行時佔用的儲存空間,主要是對輔助變數的分析。從這兩個不同的角度對演算法進行分析,設計高效率演算法。
相關文章
- 時間複雜度和空間複雜度時間複雜度
- 時間複雜度跟空間複雜度時間複雜度
- 時間複雜度與空間複雜度時間複雜度
- 時間複雜度O(n)和空間複雜度時間複雜度
- 時間複雜度和空間複雜度 順序時間複雜度
- 資料結構~時間複雜度資料結構時間複雜度
- 資料結構:時間複雜度資料結構時間複雜度
- 關於計算時間複雜度和空間複雜度時間複雜度
- 自學 資料結構四月二十一日_時間複雜度&空間複雜度資料結構時間複雜度
- 資料結構-邏輯關係&物理關係、時間複雜度、空間複雜度、順序表資料結構時間複雜度
- 時間與空間複雜度分析複雜度
- PHP 演算法基礎----時間複雜度和空間複雜度(轉載)PHP演算法時間複雜度
- 那些年忽略的知識:時間複雜度和空間複雜度詳解時間複雜度
- 122 演算法的時間複雜度和空間複雜度詳解演算法時間複雜度
- JavaScript 資料結構與演算法之美 - 時間和空間複雜度JavaScript資料結構演算法複雜度
- 冰與火之歌:「時間」與「空間」複雜度複雜度
- 資料結構與演算法(一):帶你瞭解時間複雜度和空間複雜度到底是什麼?資料結構演算法時間複雜度
- 易被忽略的知識點之 ---- 各種時間複雜度和空間複雜度時間複雜度
- 時間複雜度怎麼算?如何計算時間複雜度?時間複雜度
- 資料結構與演算法——時間複雜度資料結構演算法時間複雜度
- 資料結構 之 演算法時間複雜度資料結構演算法時間複雜度
- 資料結構-基本概念和時空複雜度資料結構複雜度
- 圖解時間複雜度圖解時間複雜度
- dfs時間複雜度分析時間複雜度
- 時間複雜度(詳解)時間複雜度
- 淺談時間複雜度時間複雜度
- 最詳細的解說—時間和空間複雜度複雜度
- 1. 時間複雜度和空間複雜度 (7 天掌握演算法面試必考知識點)時間複雜度演算法面試
- 我們常說的演算法時間複雜度和空間複雜度到底是什麼?演算法時間複雜度
- 一文講透演算法中的時間複雜度和空間複雜度計算方式演算法時間複雜度
- 資料結構基礎學習之時間複雜度分析資料結構時間複雜度
- 【資料結構】根據主定理,計算時間複雜度資料結構時間複雜度
- 時間複雜度的計算時間複雜度
- 演算法的空間複雜度演算法複雜度
- 日常分享:關於時間複雜度和空間複雜度的一些優化心得分享(C#)時間複雜度優化C#
- 如何不用演算法對陣列進行(0時間複雜度,0空間複雜度)排序?演算法陣列時間複雜度排序
- 解惑3:時間頻度,演算法時間複雜度演算法時間複雜度
- 說說你對演算法中時間複雜度,空間複雜度的理解?如何計算?演算法時間複雜度