時間複雜度的分析計算過程完整詳解

2021-10-19 13:38:37 字數 912 閱讀 5675

**在一段邏輯/演算法中,將某一段可能回被重複執行的邏輯的執行時間看作是單位1,考慮單位1的執行次數和元素個數之間的變化關係**
for(int i = 0; i < n; i++)

有1個元素,單位1執行1次

有10個元素,單位1執行10次

有n個元素,單位1執行n次

單位1的執行次數和元素個數之間的變化關係:f(n) = n -> 時間複雜度是o(n)

**如果在時間複雜度的推導計算過程中,出現了多項式和係數,除非其他項和係數大到足夠影響變化趨勢,否則不考慮**

for() // 單位1	}}

陣列中有n個元素,那麼單位1要執行多少次?

第1輪,執行n-1次

第2輪,執行n-2次

...第n-1輪,執行1次

單位1的執行次數和元素個數之間的變化關係:

f(n) = n-1 + n-2 + ... + 1

= (n-1 + 1)(n-1)/2

= n*(n-1)*1/2

-> n*(n-1) -> n^2 -> 時間複雜度是o(n^2)

**如果時間複雜度**現了對數,那麼對數的底數預設為2**

while(***)

有n個元素

第1次查詢,剩餘n*1/2

第2次查詢,剩餘n*1/2*1/2=n/(2^2)

第3次查詢,剩餘n*1/2*1/2*1/2=n/(2^3)

...經過x次查詢,剩餘1=n/(2^x)

1=n/(2^x) -> 2^x=n => f(n)=logn -> 時間複雜度是o(logn)

**注意,時間複雜度一致,不代表執行時間是一樣的,只能說明兩個演算法的變化趨勢是一樣的**

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

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

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

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

複雜度分析(上)時間複雜度 空間複雜度

為了肉眼 實時 快速地來分析出 的複雜度,我們需要乙個不用具體的測試資料來測試,就可以粗略地估計演算法的執行效率的方法。時間複雜度 空間複雜度 表示演算法的執行時間與資料規模之間的增長關係。每行 對應的 cpu 執行的個數 執行的時間都不一樣,但是,我們這裡只是粗略估計,所以可以假設每行 執行的時間...