「乙個演算法的優劣主要從演算法的執行時間與所需要占用的儲存空間兩個方面衡量。」
一、時間複雜度:
時間複雜度的計算不是計算程式具體執行的時間,而是演算法執行語句的次數。常見的複雜度有:
常數階o(1),
對數階o(log2 n),
線性階o(n),
線性對數階o(n log2 n),
平方階o(n^2),
立方階o(n^3)
k次方階o(n^k),
指數階o(2^n)。
隨著n的不斷增大,時間複雜度不斷增大,演算法花費時間越多。
時間複雜度的計算方法
①選取相對增長最高的項
②最高項係數是都化為1
③若是常數的話用o(1)表示
如: f(n) = 2*n^8 + 2n + 9999,則o(n) = n ^3
二、空間複雜度
空間複雜度是對乙個演算法在執行過程中臨時占用儲存空間大小的度量。
空間複雜度的計算方法
①忽略常數,用o(1)表示
②遞迴演算法的空間複雜度 = 遞迴深度n*每次遞迴所要的輔助空間
③對於單執行緒來說,遞迴有執行時堆疊,求的是遞迴最深的那一次壓棧所耗費的空間的個數,因為遞迴最深的那一次所耗費的空間足以容納它所有遞迴過程。
常用的演算法:
時間複雜度與空間複雜度
空間複雜度 space complexity 是對乙個演算法在執行過程中臨時占用儲存空間大小的量度,記做s n o f n 比如直接 插入排序 的時間複雜度 是o n 2 空間複雜度是o 1 而一般的 遞迴演算法就要有o n 的空間複雜度了,因為每次遞迴都要儲存返回資訊。乙個演算法的優劣主要從演算法...
時間複雜度與空間複雜度
本文是對時間複雜度以及空間複雜度的乙個理解 時間複雜度 由於環境的不同,同樣的 執行所需要的時間是不同的,所以是不能拿來比較的 而函式中執行的次數確實一樣的 所以時間複雜度就是 程式每個迴圈中的語句總共會執行的次數 時間複雜度的表示方法 大o漸進表示法 o f n 這裡的f n 是什麼呢?void ...
時間複雜度與空間複雜度
本文部分取自搜狗百科 在求演算法效率時,通常有事前分析和事後分析兩種方法,事後分析因為必須實際檢驗過後才能得出答案,且可能由於硬體方面等外部原因影響結果而不被推廣,事前分析的主要就是在考量乙個演算法的基本執行次數,這就是時間複雜度。時間複雜度 一般情況下,演算法中基本操作重複執行的次數是問題規模n的...