目錄
算法特徵
- 有窮性:有限步之後不會出現無限循環
- 確定性:不存在二義性
- 可行性:能實現的算法
- 輸入:能被計算機處理的各種類型數據,如數字、音頻、圖像等
- 輸出:一至多個程序輸出結果
時間複雜度
用來衡量算法隨着問題規模增大,算法執行時間增長的快慢。
定義:語句總的執行次數T(n)是關於問題n的函數,進而分析T(n)隨n變化情況,從而確定T(n)的數量級。
算法的時間量度(算法複雜度):T(n)=O( f(n) ); 它表示隨問題規模n的增大,算法執行時間的增長率和 f (n)的增長率相同。
計算方法:取算法時間增長最快的那個函數項,把他的係數改爲1【執行次數=時間】
常用時間複雜度大小關係:從左至右,時間性能依次降低
O(1)< O(log n)< O(n)< O(nlog n)< O(n*n)< O(n*n*n)< O(2^n)
空間複雜度
用來衡量算法隨着問題規模增大,算法所需空間增長的快慢。
S(n)指算法運行過程中所使用的輔助空間的大小。
輔助空間:除了存儲算法本身的指令、常數、變量和輸入數據外,還需要存儲對數據操作的存儲單元。
算法原地工作是指算法所需的輔助空間是常量,即O(1)。
主要分析其問題規模函數 S(n)的數量級。 S(n)= O(g(n))