漫畫:別再問我什麼是時間複雜度了

時間複雜度是學習算法的基石,今天咱們來聊聊爲何要引入時間複雜度,什麼是時間複雜度以及如何去算一個算法的時間複雜度算法

1、刻畫算法的運行時間

某日,慧能叫來了一塵打算給他補習補習一下基礎知識,只見克寫了一段很是簡單的代碼markdown

圖片

image-20210426023110170

image-20210426023130801

image-20210426023148555

image-20210426023211105

圖片

image-20210426023246693

image-20210426023310271

一塵看老師有點生氣,開始虛心請教了數據結構

image-20210426023342540

圖片

image-20210426023414239

爲了方便討論,這裏咱們把每一條語句的執行時間都看作是同樣的,記爲一個時間單元函數

image-20210426023526558

圖片

image-20210426023557995

① 藍色框的兩條語句,花費兩個時間單元oop

②黑色框的一條語句,花費n+1個時間單元學習

③紅色框的兩條語句,花費2*n個時間單元spa

image-20210426023628861

這不是數學嗎,一塵內心想到設計

image-20210426023704277

其中的n被咱們稱爲問題的規模,其實就是你處理問題的大小3d

慧能順手畫了這個函數的圖code

圖片

本文主要討論問題規模和運行時間的關係,假定不一樣輸入和運行時間基本無關

image-20210426023934437

image-20210426024024167

image-20210426024046867

image-20210426024103613

image-20210426024120916

2、時間複雜度

image-20210426024201373

好比說:T(n)=3n+3, 當n很是大的時候常數3和n的係數3對函數結果的影響就很小了

圖片

image-20210426024250558

好比:

T(n)=n+1 忽略常數項 T(n)~n

T(n)=n+n^2 忽略低階項 T(n)~n^2

T(n)=3n 忽略最高階的係數 T(n)~n

image-20210426024423010

image-20210426024443197

image-20210426024500918

image-20210426024528079

圖片

還好不用掌握那頭疼的數學,一塵心中想到

image-20210426024617355

一塵把話題又拉了回來

image-20210426024648521

圖片

image-20210426024740873

更準確地說O表明了運行時間函數的一個漸進上界,即T(n)在數量級上小於等於f(n)

image-20210426024822915

3、時間複雜度的計算

image-20210426150816680

1、得出運行時間的函數 2、對函數進行簡化

①用常數1來取代運行時間中全部加法常數

②修改後的函數中,只保留最高階項 ③若是最高階項存在且不是1,則忽略這個項的係數

image-20210426151026142

圖片

image-20210426151057711

O(1)也被稱爲常數階

image-20210426152505884

image-20210426151148761

圖片

image-20210426151218373

image-20210426151246271

一塵隨手寫了一段嵌套循環的代碼

圖片

image-20210426151329834

image-20210426151350040

image-20210426151412651

圖片

接着,慧能又寫了一段時間複雜度爲對數的代碼

圖片

image-20210426151716075

image-20210426151749173

一貫數學不太好的一塵此時有點懵

image-20210426151639851

圖片

image-20210426151926308

image-20210426151945634

image-20210426152009959

image-20210426152029236

另外,關於數據結構與算法的學習,能夠看這本 PDF,把各類算法模版都總結好了,跟着學就行:

圖片

兩個月斬獲 70k star,前字節大神刷題筆記

往期

2. 別再問我什麼是跳躍表了

3. 別再問我什麼是二叉堆了

4. 別再問我什麼事AVL 樹了

5. 別再問我什麼是紅黑樹了

6. 別再問我什麼是 trie 樹了

7. Hash設計原理(上)

8. Hash設計原理(中)

9. Hash設計原理之開放地址法(下)

相關文章
相關標籤/搜索