資料結構實戰C 6 演算法效率的度量

2021-10-05 01:40:25 字數 1625 閱讀 2865

【資料結構實戰c++】6 演算法效率的度量

基本身演算法時間複雜度是o(2n)o(n!)o(nn)

的時候,執行時間就是不可接受的了

例項分析

分最好情況和最壞情況

一般沒有特殊說明,分析演算法的時間複雜度都是指最壞時間複雜度

-s(n) = s(f(n))

n為演算法的問題規模

f(n)是空間使用函式,與n有關

空間複雜度例項

所需要的單位記憶體 : n +4

空間複雜度 :s(n + 4) = s(n)

例項分析:空間換時間

/*

問題:在乙個由自然數1-1000中某些數字所組成的陣列中,每個數字可能出現零次或者多次。

設計乙個演算法,找出出現次數最多的數字。

*/#include

using

namespace std;

void

search

(int a,

int len)

// o(n)

;int max =0;

for(

int i=

0; i

)//遍歷陣列元素,作為下表統計,空間換時間

for(

int i=

0; i<

1000

; i++)}

for(

int i=

0; i<

1000

; i++)}

}int

main

(int argc,

char

* ar**)

;search

(a,sizeof

(a)/

sizeof

(*a));

return0;

}

只能說明是同乙個級別的,但是不能說明複雜度相同小結一般工程中,時間複雜度不超過0(n^3)

演算法分析中,重點考慮的是最壞時間複雜度,時間複雜度也是最關注的

大o表示法童謠適合演算法的空間複雜度

空間換時間是工程中經常用的策略

資料結構 演算法效率

資料結構之前,先來了解兩個概念 時間複雜度 由來 這裡的時間複雜度不是程式執行的時間。評價乙個演算法的好壞,並不能通過程式執行的快慢來評估。因為程式的執行快慢還有很多因素,和計算機硬體有關,所以如果在不同的電腦上 執行的時間可能不一樣 那麼這裡的時間複雜度指啥,指的是演算法中基本操作的執行次數。比如...

資料結構初學過程中對演算法效率度量的理解

引例 對於給定陣列a 8 如何將陣列前三個元素移到陣列後面使得 a 8 1 第一種方法 耗費記憶體 定義乙個新的空白陣列b,將a 3 往後的元素依次放入b 0 至b 4 接著將a 0 至a 2 放入b 5 至b 7 最後用 a i b i 將元素移入a中即可。第1步 第2步 如下 int i,j i...

資料結構 求演算法效率的介紹

一 演算法效率。二 時間效率。一 定義 1 時間效率也被稱為時間複雜度,它反映的是乙個演算法所執行時間的快慢,時間複雜度大,則效率低,反之,效率就高。2 在電腦科學中,演算法的時間複雜度是乙個函式,它定量描述了該演算法的執行間。一 個演算法執行所耗費的時間,從理論上說,是不能算出來的,只有你把你的程...