常見演算法的時間與空間複雜度
~~~總結一些概念便於隨時檢視
1.什麼是時間複雜度(漸進時間複雜度)?
簡單來說,時間複雜度即是乙個演算法執行花費的時間。
2.如何求?
問題規模為n的乙個演算法內基本語句執行次數記為t(n),此時另乙個函式f(n),當n趨近於無窮大時t(n)/f(n)為乙個不等於零的常數,則該演算法的時間複雜度記為o(f(n));
f(n)越小,時間複雜度越低,演算法效率越高。
1for(i=1; i<=n; ++i)
29 }
此處引用百科**,t(n)=n3+n2,令f(n)=n3,此時t(n)/f(n)滿足條件,則該**的時間複雜度為o(n3)。
3.什麼是空間複雜度(漸進空間複雜度)?
空間複雜度描述演算法執行過程中臨時占用的儲存空間。
演算法在計算機上的儲存空間包括:
1)演算法本身**的儲存空間;
2)演算法的資料(輸入輸出的資料)的儲存空間;
3)演算法在執行過程中臨時占用的儲存空間;
4)如何求?
一般簡單演算法的空間複雜度為o(1),一般的遞迴演算法為o(n),具體的分析需要根據演算法中分配儲存空間**所處的位置(此處僅考慮**本身的儲存空間)。
演算法的複雜度 時間複雜度與空間複雜度
通常,對於乙個給定的演算法,我們要做 兩項分析。第一是從數學上證明演算法的正確性,這一步主要用到形式化證明的方法及相關推理模式,如迴圈不變式 數學歸納法等。而在證明演算法是正確的基礎上,第二步就是分析演算法的時間複雜度。演算法的時間複雜度反映了程式執行時間隨輸入規模增長而增長的量級,在很大程度上能很...
演算法的時間複雜度與空間複雜度
雖然計算機能快速的完成運算處理,但實際上,它也需要根據輸入資料的大小和演算法效率來消耗一定的處理器資源。要想編寫出能高效執行的程式,我們就需要考慮到演算法的效率。演算法的效率主要由以下兩個複雜度來評估 時間複雜度 評估執行程式所需的時間。可以估算出程式對處理器的使用程度。空間複雜度 評估執行程式所需...
演算法的 時間複雜度 與 空間複雜度
如果乙個演算法的執行次數是 t n 那麼只保留最高次項,同時忽略最高項的係數後得到函式 f n 此時演算法的時間複雜度就是 o f n 為了方便描述,下文稱此為 大o推導法。由此可見,由執行次數 t n 得到時間複雜度並不困難,很多時候困難的是從演算法通過分析和數 算得到 t n 對此,提供下列四個...