時間複雜度和空間度

2021-08-20 06:55:47 字數 1244 閱讀 4712

基本概念:

資料:計算機中可以操作的物件;

資料元素:組成資料的,有一定意義的基本單位;

資料項:乙個資料元素可由若干個資料項組成。

對於順序結構來說,刪除和插入不方便;而對於物理結構來說,查詢不方便。

時間複雜度:

一般情況下,使用o漸進表示法來計算演算法的時間複雜度。

一般演算法o(n)計算方法:

(1)先找總執行次數(迴圈對應乘法;順序對應加法);

(2)給次數加上o( );

(3)用常數1取代執行時間中的所有加法常數;

(4)在修改後的執行次數函式中,只保留最高端項;

(5)如果最高端項係數存在且不是1,則去除與這個項相乘的常數。

遞迴演算法的時間複雜度:遞迴總次數*每次遞迴次數。

折半查詢的時間複雜度為:o(lgn)。

空間複雜度:函式中建立物件的個數關於問題規模函式表示式,一般情況下用o漸進表示法表示。

以求第5個斐波那契數為例畫圖分析,求時間複雜度和空間複雜度:

要求第五個斐波那契數,必須知道第四個和第三個斐波那契數;

而要求第四個斐波那契數,必須知道第三個和第二個斐波那契數;

進而要求第三個斐波那契數,必須知道第二個和第乙個斐波那契數。

採用尾遞迴實現斐波那契演算法

int main()

分析:假設求第6個斐波那契數,傳的實參依次為:

(1,1,6);

(1,2,5);

(2,3,4);

(3,5,3)當n==3時,結束遞迴。

採用迴圈實現斐波那契演算法

long fib(long first,long second,long n)

while(1)

n--;

}}int main()

分析:假設求第6個斐波那契數:

第一次迴圈:i=6, ret=0, tmp=1, f=1, s=tmp+s=2;

第二次迴圈:i=5, ret=0, tmp=1, f=2, s=tmp+s=3;

第三次迴圈:i=4, ret=8, tmp=2, f=3, s=tmp+s=5;

時間複雜度和空間複雜度

同一問題可用不同演算法解決,而乙個演算法的質量優劣將影響到演算法乃至程式的效率。演算法分析的目的在於選擇合適演算法和改進演算法。乙個演算法的評價主要從時間複雜度和空間複雜度來考慮。1 時間複雜度 1 時間頻度 乙個演算法執行所耗費的時間,從理論上是不能算出來的,必須上機執行測試才能知道。但我們不可能...

時間複雜度和空間複雜度

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

時間複雜度和空間複雜度

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