複雜度分析(二)

2022-01-23 11:27:30 字數 789 閱讀 7693

在前面一篇文章中,我們講了為什麼要進行複雜度分析,以及如何分析複雜度。那麼接下來我將舉乙個例子,請你按照之前的複雜度分析分析出來。

for (var i = 0; i <= arr.length; i++)

}

上面這段**的複雜度是多少呢,假設陣列長度為n,最好的情況下是i=0的時候,就找到相等的了,最壞情況下是:最後乙個才找到,或者迴圈一遍之後乙個都沒找到。我們知道上面兩種是極端情況,一般發生的概率都不大。

對於上面這個情況,我們就要引入平均時間複雜度的概念了。

我們知道平均複雜度的演算法,就像平均數的演算法一樣,用總的查詢次數/多少種情況 。從0到n-1,共有n種情況,再加上不在陣列中的情況(1)種,所以總共n+1總情況。總的查詢次數就是從0,1,2,3 到n,n; 

根據上面算出時間複雜度為

省略掉常量得出的平均複雜度時間為o(n)。

好像上面這樣做法,沒有什麼毛病。但是我們仔細想想,上面有兩種情況,在陣列裡面和不在陣列裡面,發生的情況都是1/2。另外,要查詢的資料,出現在陣列裡面的概率,每個位置都是1/n。

根據概率論的一點知識,在陣列裡面的情況的概率是1/2n。

所以得出如下結論

去掉常量,平均時間複雜度還是為o(n)。

上面就是平均時間複雜度的演算法。碰到這些,我們要好好分析。

複雜度分析 時間複雜度分析和空間複雜度分析

其實,只要講到資料結構與演算法,就一定離不開時間 空間複雜度分析。而且我個人認為,複雜度分析是整個演算法學習的精髓,只要掌握了它,資料結構和演算法的內容基本上就掌握了一半。1.時間複雜度分析 對於剛才羅列的複雜度量級,我們可以粗略地分為兩類,多項式量級和非多項式量級。其中,非多項式量級只有兩個 o ...

複雜度分析 時間複雜度 空間複雜度

執行效率是演算法的乙個重要的考量指標,演算法的執行效率用時間 空間複雜度來衡量。今天我們來學習一下複雜度的分析。通常我們可以通過執行程式來獲得演算法的真正的執行時間,這種方法我們可以稱為事後統計法,但這種方法得到的是具體的資料,測試結果很依賴測試環境,而且受資料規模影像最大。因此,我們需要乙個不需要...

二 複雜度分析 下

這篇從要從四個方面去分析複雜度 最好情況時間複雜度 最壞情況時間複雜度 平均情況時間複雜度 均攤時間複雜度。首先分析以下例子 由於在迴圈中有乙個 if 判斷語句,所以無法粗略的定義該段 的時間複雜度為o n 在這裡我們就需要引入三個概念 最好情況時間複雜度 最壞情況時間複雜度 平均情況時間複雜度。由...