時(shí)間復(fù)雜度和“O”表示法

算法是計(jì)算機(jī)處理信息的本質(zhì)捉貌,因?yàn)橛?jì)算機(jī)程序本質(zhì)上是一個(gè)算法來(lái)告訴計(jì)算機(jī)確切的步驟來(lái)執(zhí)行一個(gè)指定的任務(wù)。算法是獨(dú)立存在的一種解決問(wèn)題的方法和思想冬念,對(duì)于算法而言趁窃,實(shí)現(xiàn)的語(yǔ)言并不重要,重要的是思想急前。

算法的五大特性:

1醒陆、輸入:?算法具有0個(gè)或多個(gè)輸入

2、輸出:?算法至少有1個(gè)或多個(gè)輸出

3裆针、有窮性:?算法在有限步驟之后會(huì)自動(dòng)結(jié)束而不會(huì)無(wú)限循環(huán)刨摩,且每一個(gè)步驟要在可接受的時(shí)間內(nèi)完成

4、確定性:算法中的每一步都有確定的含義世吨,不會(huì)出現(xiàn)二義性(比如數(shù)值的相加和字符串的拼接)

5澡刹、可行性:算法的每一步都是可行的,也就是說(shuō)每一步都能夠執(zhí)行有限的次數(shù)完成

實(shí)現(xiàn)算法程序的執(zhí)行時(shí)間可以反應(yīng)出算法的效率耘婚,即算法的優(yōu)劣罢浇,但是單純依靠運(yùn)行的時(shí)間來(lái)比較算法的優(yōu)劣并不一定是客觀準(zhǔn)確的!程序的運(yùn)行離不開(kāi)計(jì)算機(jī)環(huán)境(包括硬件和操作系統(tǒng))沐祷,這些客觀原因會(huì)影響程序運(yùn)行的速度并反應(yīng)在程序的執(zhí)行時(shí)間上嚷闭。

我們假定計(jì)算機(jī)執(zhí)行算法每一個(gè)基本操作的時(shí)間是固定的一個(gè)時(shí)間單位,那么有多少個(gè)基本操作就代表會(huì)花費(fèi)多少時(shí)間單位戈轿。算然對(duì)于不同的機(jī)器環(huán)境而言凌受,確切的單位時(shí)間是不同的阵子,但是對(duì)于算法進(jìn)行多少個(gè)基本操作(即花費(fèi)多少時(shí)間單位)在規(guī)模數(shù)量級(jí)上卻是相同的思杯,由此可以忽略機(jī)器環(huán)境的影響,從客觀的角度看待算法的時(shí)間效率,對(duì)于算法的時(shí)間效率色乾,我們可以用“大O記法”來(lái)表示誊册。

“大O記法”

對(duì)于單調(diào)的整數(shù)函數(shù)f,如果存在一個(gè)整數(shù)函數(shù)g和實(shí)常數(shù)c>0暖璧,使得對(duì)于充分大的n總有f(n)<=c*g(n)案怯,就說(shuō)函數(shù)g是f的一個(gè)漸近函數(shù)(忽略常數(shù)),記為f(n)=O(g(n))澎办。也就是說(shuō)嘲碱,在趨向無(wú)窮的極限意義下,函數(shù)f的增長(zhǎng)速度受到函數(shù)g的約束局蚀,亦即函數(shù)f與函數(shù)g的特征相似麦锯。

時(shí)間復(fù)雜度:

假設(shè)存在函數(shù)g,使得算法A處理規(guī)模為n的問(wèn)題所用時(shí)間為T(mén)(n)=O(g(n))琅绅,則稱(chēng)O(g(n))為算法A的漸近時(shí)間復(fù)雜度扶欣,簡(jiǎn)稱(chēng)時(shí)間復(fù)雜度,記為T(mén)(n)

如何理解“大O記法”

對(duì)于算法進(jìn)行特別具體的細(xì)致分析雖然很好千扶,但在實(shí)踐中的實(shí)際價(jià)值有限料祠。對(duì)于算法的時(shí)間性質(zhì)和空間性質(zhì),最重要的是其數(shù)量級(jí)和趨勢(shì)澎羞,這些是分析算法效率的主要部分髓绽。而計(jì)量算法基本操作數(shù)量的規(guī)模函數(shù)中那些常量因子可以忽略不計(jì)。例如煤痕,可以認(rèn)為3n**2和100n**2屬于同一個(gè)量級(jí)梧宫,如果兩個(gè)算法處理同樣規(guī)模實(shí)例的代價(jià)分別為這兩個(gè)函數(shù),就認(rèn)為它們的效率“差不多”摆碉,都為n**2級(jí)塘匣。

最壞時(shí)間復(fù)雜度

分析算法時(shí),存在幾種可能的考慮:

1巷帝、·算法完成工作最少需要多少基本操作忌卤,即最優(yōu)時(shí)間復(fù)雜度

2、·算法完成工作最多需要多少基本操作楞泼,即最壞時(shí)間復(fù)雜度

3驰徊、·算法完成工作平均需要多少基本操作,即平均時(shí)間復(fù)雜度

我們主要關(guān)注算法的最壞情況堕阔,亦即最壞時(shí)間復(fù)雜度棍厂。

時(shí)間復(fù)雜度的幾條基本計(jì)算規(guī)則:

1.、基本操作超陆,即只有常數(shù)項(xiàng)牺弹,認(rèn)為其時(shí)間復(fù)雜度為O(1)

2浦马、順序結(jié)構(gòu),時(shí)間復(fù)雜度按加法進(jìn)行計(jì)算

3.张漂、循環(huán)結(jié)構(gòu)晶默,時(shí)間復(fù)雜度按乘法進(jìn)行計(jì)算

4.、分支結(jié)構(gòu)航攒,時(shí)間復(fù)雜度取最大值

5.磺陡、判斷一個(gè)算法的效率時(shí),往往只需要關(guān)注操作數(shù)量的最高次項(xiàng)漠畜,其它次要項(xiàng)和常數(shù)項(xiàng)可以忽略

6.币他、在沒(méi)有特殊說(shuō)明時(shí),我們所分析的算法的時(shí)間復(fù)雜度都是指最壞時(shí)間復(fù)雜度

常見(jiàn)時(shí)間復(fù)雜度:

常見(jiàn)時(shí)間復(fù)雜度之間的關(guān)系:

所消耗的時(shí)間從小到大:

O(1)?<?O(logn)?<?O(n)?<?O(nlogn)?<?O(n2)?<?O(n3)?<?O(2n)?<?O(n!)?<?O(nn)

測(cè)試程序的運(yùn)行時(shí)間:timeit模塊

下面以5種方式創(chuàng)建列表憔狞,對(duì)比其運(yùn)行時(shí)間:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末圆丹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子躯喇,更是在濱河造成了極大的恐慌辫封,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廉丽,死亡現(xiàn)場(chǎng)離奇詭異倦微,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)正压,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)欣福,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人焦履,你說(shuō)我怎么就攤上這事拓劝。” “怎么了嘉裤?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵郑临,是天一觀的道長(zhǎng)屑宠。 經(jīng)常有香客問(wèn)我厢洞,道長(zhǎng),這世上最難降的妖魔是什么典奉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任躺翻,我火速辦了婚禮,結(jié)果婚禮上卫玖,老公的妹妹穿的比我還像新娘公你。我一直安慰自己,他們只是感情好假瞬,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布陕靠。 她就那樣靜靜地躺著嚣崭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪懦傍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天芦劣,我揣著相機(jī)與錄音粗俱,去河邊找鬼。 笑死虚吟,一個(gè)胖子當(dāng)著我的面吹牛寸认,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播串慰,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼偏塞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了邦鲫?” 一聲冷哼從身側(cè)響起灸叼,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庆捺,沒(méi)想到半個(gè)月后古今,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滔以,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年捉腥,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片你画。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抵碟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坏匪,到底是詐尸還是另有隱情拟逮,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布适滓,位于F島的核電站唱歧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏粒竖。R本人自食惡果不足惜颅崩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕊苗。 院中可真熱鬧沿后,春花似錦、人聲如沸朽砰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至漆弄,卻和暖如春睦裳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撼唾。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工廉邑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人倒谷。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓蛛蒙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親渤愁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牵祟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 算法的時(shí)間復(fù)雜度和空間復(fù)雜度-總結(jié)通常,對(duì)于一個(gè)給定的算法抖格,我們要做 兩項(xiàng)分析诺苹。第一是從數(shù)學(xué)上證明算法的正確性,這...
    Explorer_Mi閱讀 1,447評(píng)論 0 1
  • 通常雹拄,對(duì)于一個(gè)給定的算法筝尾,我們要做 兩項(xiàng)分析。第一是從數(shù)學(xué)上證明算法的正確性办桨,這一步主要用到形式化證明的方法及相關(guān)...
    西域小碼閱讀 1,863評(píng)論 0 11
  • 算法復(fù)雜度 時(shí)間復(fù)雜度 空間復(fù)雜度 什么是時(shí)間復(fù)雜度 算法執(zhí)行時(shí)間需通過(guò)依據(jù)該算法編制的程序在計(jì)算機(jī)上運(yùn)行時(shí)所消耗...
    KODIE閱讀 3,256評(píng)論 0 9
  • 什么是算法的復(fù)雜度 算法復(fù)雜度筹淫,即算法在編寫(xiě)成可執(zhí)行程序后,運(yùn)行時(shí)所需要的資源呢撞,資源包括時(shí)間資源和內(nèi)存資源损姜。 一個(gè)...
    儒生閱讀 1,726評(píng)論 0 2
  • 親愛(ài)的子子: 不知不覺(jué)你已經(jīng)兩歲七個(gè)月了。時(shí)光飛逝殊霞,歲月如梭摧阅,那個(gè)嗷嗷哺乳的小嬰兒,現(xiàn)在已經(jīng)長(zhǎng)成小小男子漢绷蹲。 我跟...
    Karman風(fēng)中果實(shí)閱讀 196評(píng)論 0 0