這種複雜度的計算主要是來度量算法的效率。
主要度量兩種複雜度:
- 時間複雜度,需要計算多少次
- 空間複雜度,需要佔用多少空間
時間複雜度
時間複雜度主要考慮的是計算的次數,而不是實際時間,因爲計算機性能不一樣需要用的時間也是不一樣的。
時間複雜度,用來事前預估算法時間開銷和問題規模n的關係。這裏的n就是指平時我們數據的量或者是輸入的參數等。例如循環n次。
時間複雜度其實包括三種:
- 最好時間複雜度,就是考慮最好的情況
- 平均時間複雜度,考慮所有輸入數據都等概率出現的情況
- 最壞時間複雜度,
計算的時候忽略低階的次數
對於計算機來說二次方在三次方前面不足爲道。並且前面的係數也是不足爲道的。
複雜度的大小比較
順序:常對冪指階
空間複雜度
空間複雜度表示程序運行時對內存的需求程度。
兩個因素會影響內存佔用程度:
- 變量和內存增加有關
- 函數調用也會帶來內存增加
變量帶來內存增加
如果生成新的變量則會帶來內存怎講,如果變量數量不增加則空間複雜度是O(1).
對於一維數組來說,他是O(n),因爲數組越長內存佔用越多。
對於二維數組來說是n平方。
因爲是相對於輸入變量來說的。比如:
函數調用帶來內存開銷
因爲調用函數的時候會存儲局部變量,所以會佔用內存。
引用
- 王道考研-數據結構