算法:一個計算過程,解決問題的方法
1. 時間複雜度
時間複雜度:用來評估算法運行效率的一個式子(單位)
一般來說時間複雜度高的算法比複雜度低的算法慢。
常見的時間複雜度(按效率排序):
O(1)<O(logn)<O(n)<O(nlogn)<O(n2) <O(n2logn)<O(n^3)
複雜問題的時間複雜度:
O(n!)、O(2n)、O(nn)…
快速判斷算法複雜度(適用於絕大多數簡單情況):
- 確定問題規模n
- 循環減半過程——>logn
- k層關於n的循環——>n^k
複雜情況:根據算法執行過程判斷
2.空間複雜度
空間複雜度:用來評估算法內存佔用大小的式子
空間複雜度的表示方式與時間複雜度完全一樣。
- 算法使用了幾個變量:O(1)
- 算法使用了長度爲n的一維列表:O(n)
- 算法使用了m行n列的二維列表:O(mn)