演算法複雜度

2021-07-15 10:18:30 字數 1157 閱讀 2354

一、 概述

演算法複雜度,即演算法在編寫成可執行程式後,執行時所需要的資源,資源包括時間資源和記憶體資源。

同乙個問題可以用不同的演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法,乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。

二、 時間複雜度

時間頻度

演算法中語句執行次數,標記t(n)。

時間複雜度

一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t(n)來表示,若有某個輔助函式f(n),使得當n趨近於無窮大時,t(n)/f(n)的極值為不等於零的常數,則稱f(n)是t(n)的同量級函式,記作t(n)=o(f(n)),稱o(f(n))為演算法的漸進時間複雜度,簡稱時間複雜度。

在演算法中,如果語句執行次數是乙個常數,則時間複雜度是o(1)。

在不同演算法中,時間頻度不相同時,時間複雜度可能相同。

3.步驟

(1)、計算執行次數t(n);

(2)、計算t(n)的數量級;

(3)、用大o表示時間複雜度。

4.例項

int num1,num2;                      //1

for(int i = 0;i < n;i++)

}

(1)、 語句 int num1,num2;int i= 0 頻度為1;

(2)、 語句 i三、 空間複雜度

指演算法在計算機內執行時所需儲存空間的度量。記作s(n)=o(f(n))。在許多實際問題中,為減少演算法所占用的儲存空間,通常採用壓縮儲存技術。

乙個演算法在計算機儲存器上所占用的儲存空間,包括儲存演算法本身所占用的儲存空間,演算法的輸入輸出所占用的儲存空間和演算法在執行過程中臨時占用的儲存空間這三個方面。

演算法的空間複雜度通過計算演算法所需的儲存空間來實現,演算法空間複雜度的計算公式記作:s(n)=o(f(n)),其中,n為問題的規模,f(n)為語句關於n所佔儲存空間的函式。

一般情況下,乙個程式在機器上執行時,除了需要儲存程式本身的指令,常數,變數和輸入資料外,還需要儲存對資料操作的儲存單元。若輸入資料所佔空間只取決於問題本身,和演算法無關,這樣只需要分析該演算法在實現是所需的輔助單元即可。若演算法執行時所需的輔助空間相對於輸入資料量而言是個常數,則稱此演算法為原地工作,空間複雜度為o(1)。

演算法複雜度 時間複雜度和空間複雜度

1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時間多,哪個演算法花費的時間少就可以了。並且乙個演算法花費的時間與演算法中語句的執行次數成正比例,哪個演算法中語句執行次數...

演算法複雜度 時間複雜度和空間複雜度

演算法複雜度 時間複雜度和空間複雜度 關鍵字 演算法複雜度 時間複雜度 空間複雜度 1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能也沒有必要對每個演算法都上機測試,只需知道哪個演算法花費的時 間多,哪個演算法花費的時間少就可以...

演算法複雜度 時間複雜度和空間複雜度

演算法的時間複雜度是指執行演算法所需要的計算工作量。n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。但有時我們想知道它變化時呈現什麼規律。為此,我們引入時間複雜度概念。一般情況下,演算法中基本操作重複執行的次數是問題規模n的某個函式,用t n 表示,若有某個輔助函式f n 存在乙個正...