2013-11-01 71 views
0

只是一個簡單的問題:平均情況複雜 - 計算線性算法

如果我有一個線性搜索算法(它會經過的每一個元素,一旦達到一定的條件下),我怎麼能計算出平均情況複雜對於n = 500?最壞的情況和最好的情況很容易。

+1

如果它是線性計數,它不會只是250嗎? – joshstrike

回答

3

平均情況同樣很簡單:只要你發現的物品是獨一無二的,平均來說,你將不得不在查看列表+ 0.5的一半。

讓我們假設你查看列表中的每個項目一次。當你查找第一個項目時,你將不得不檢查一個項目。當你查看第二個項目時,你將不得不檢查2個項目,等等。檢查總數爲

1 + 2 + 3 + ... + 500 = 125250 

因此,通過500次查找,您將總共檢查125250個項目。平均而言,每次查詢的檢查次數爲250.5次。

如果您的查找模式不均勻,那麼這會使您的平均情況偏差(例如,如果您更頻繁地查找列表開頭的項目,或者某些項目被重複查找並找到其中任何項目就足夠了)

+0

是的,這就是我的想法,但我記得因爲某種原因,我的老師在講座中說這是不正確的。不過,這對我來說很合理。謝謝! – user1062704

+0

當我真正計算複雜性時,讓我感到吃驚的是,答案是250.5而不是250. – tfinniga

+1

如果它令人驚訝,你只需記住基本算術系列(1 + 2 + ... + n)之和的公式, 。這是(術語數)*(第一學期+上學期)/ 2。既然你把這個總和除以項數,你計算的只是(第一項+上一項)/ 2。在這種情況下(500 + 1)/ 2 – Shashank

0

線性搜索算法的平均情況複雜度爲n + 2 其中n是列表中元素的數量。