《算法圖解》NOTE 1 算法的漸近表示法以及二分法

這是《算法圖解》的第一篇讀書筆記,內(nèi)容關(guān)于表示算法復(fù)雜度的漸近表示法以及一個(gè)簡單但高效的算法:二分法。

1 .漸近表示法

1.1定義

算法的運(yùn)行需要時(shí)間,這就需要衡量算法運(yùn)行時(shí)間即時(shí)間復(fù)雜度的方式。這個(gè)衡量方式就被成為漸近表示法(大O表示法)。
漸近表示法用于描述算法在最糟糕情況下的運(yùn)行時(shí)間,同時(shí)也表示了算法運(yùn)行時(shí)間隨問題規(guī)模擴(kuò)大而增長的幅度。

1.2如何使用漸近表示法確定時(shí)間復(fù)雜度

一般而言,算法復(fù)雜度可用一個(gè)函數(shù)進(jìn)行表示。之后,僅保留函數(shù)中增長幅度最大的一項(xiàng),而這一項(xiàng)就可用于衡量該算法的時(shí)間復(fù)雜度。

1.3時(shí)間復(fù)雜度的優(yōu)先級(jí)

以下為常見的漸近表示方式及復(fù)雜度的優(yōu)先級(jí)。其中,時(shí)間復(fù)雜度由上往下逐漸增加。

θ(1):常數(shù)級(jí)
θ(log(n)):對(duì)數(shù)級(jí)
θ(n):線性級(jí)
θ(nlog(n)):對(duì)數(shù)線性級(jí)
θ(n^2):平方級(jí)
θ(n^3):立方級(jí)
O(n^k):多項(xiàng)式級(jí)
?(k^n):指數(shù)級(jí)
θ(n!):階乘級(jí)

2.二分法

2.1定義

二分法指的是在求解問題的過程中不斷地折半縮減問題規(guī)模,最終在有限時(shí)間(log2 n)內(nèi)求出問題答案的算法。

2.2實(shí)例

使用二分法的案例有很多,下面演示如何用二分法近似求出sqrt(2),精度在0.00000001

#二分法近似求出sqrt(2),精度在0.00000001
import math

def dichotomy(target,precision):
    square_target=int(target*target)
    low=0
    high=int(square_target**2)
    result=(low+high)/2
    while len(str(result))<10:
        if result**2<=square_target:
            low=result
        else:
            high=result
        result=(low+high)/2
    return result

print(dichotomy(math.sqrt(2),8))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Model協(xié)議是你應(yīng)用中任何model都贏準(zhǔn)守的基礎(chǔ)協(xié)議,尤其是持久化存儲(chǔ)的模型。 Model只能在Vapor中使...
    Supremodeamor閱讀 1,362評(píng)論 3 1
  • 達(dá)芬奇是一個(gè)和平主義者,所以他才設(shè)計(jì)了很多又酷又狠的戰(zhàn)爭武器!他想讓戰(zhàn)爭快點(diǎn)結(jié)束(勝利),可我不認(rèn)為這樣能讓...
    Oops_0418閱讀 369評(píng)論 2 0
  • 2008年是記憶深刻的一年。 2018年也將必然成為記憶深刻的一年。 而2018年也確實(shí)將是記憶深刻的一年。 離2...
    等心語閱讀 238評(píng)論 0 0
  • 你好!
    無語問斜陽閱讀 188評(píng)論 0 0
  • 很多人往往把寫不好文章歸咎于自己寫作風(fēng)格沒有形成,語句不通順,思考不夠深入,修辭不夠熟練等等。但是很少有人注意到影...
    大為君David閱讀 6,158評(píng)論 49 108

友情鏈接更多精彩內(nèi)容