概念定義
- 輸入空間:存儲輸入數據所需的空間大小
- 暫存空間:算法運行過程中,存儲所有中間變量和對象等數據所需的空間大小
- 輸出空間:算法運行返回時,存儲輸出數據所需的空間大小
通常情況下,空間復雜度是指在輸入數據大小為N時,算法運行所使用的【暫存空間】 + 【輸出空間】的總體大小
而根據不同來源,算法使用的內存空間分為三類:
指令空間:
編譯后,程序指令所使用的內存空間
數據空間:
算法中的各項變量使用的空間,包括:聲明的常量、變量、動態數組、動態對象等使用的內存空間。
棧幀空間:
程序調用函數是基於棧實現的,函數在調用期間,占用常量大小的棧幀空間,直至返回后釋放。
符號表示
通常情況下,空間負責度統計算法在最差情況下使用的空間大小,以體現算法運行所需預留的空間量,使用符號O表示。
最差情況有兩層含義,分別為【最差輸入數據】、算法運行中的【最差運行點】。
常見種類
根據從小到大排序,常見的算法空間復雜度有:
O(1)<O(logN)<O(N)<O(N2)<O(2N)
參考資料:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/r8ytog/