精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

【算法】懂點算法(一)— 算法的時間空間復雜度

開發(fā) 前端 算法
在本文中,筆者介紹了什么是算法、為什么要用算法、如何衡量算法的時間復雜度和空間復雜度以及算法的最壞情況和平均情況的概念。

[[407579]]

寫在前面

大廠秋招提前批已經開啟,吹響了應屆生秋招的號角,也就意味著大家要加入殘酷的招聘競爭。筆試面試是規(guī)范求職過去的坎,而算法對于大多數(shù)人而言是是道難關,只有通過系統(tǒng)學習和理解刷題才能征服它。

為了幫助更多人去理解數(shù)據(jù)結構和算法,將開辟新的博文系列《懂點算法》,希望大家能夠渡過痛苦的日子。本人在算法研究上,能力有限,希望大家能夠取其精華,汲取干貨。

什么是算法

算法(Algorithm)是指用來操作數(shù)據(jù)、解決程序問題的一組方法。

衡量不同算法之間的優(yōu)劣有兩種方法:

  • 事后統(tǒng)計法:通過統(tǒng)計、監(jiān)控,利用計算機計時器對不同算法的運行時間進行比較,從而確定算法效率的高低,但是具有非常大的局限性。
  • 事前分析估算法:在計算機程序編制前,依據(jù)統(tǒng)計方法對算法進行估算。

舉個栗子,我們知道斐波那契數(shù)列的規(guī)律是:數(shù)列從第3項開始,每一項數(shù)值是前兩項數(shù)值之和。即:0,1,1,2,3,5,8...

分析:我們觀察斐波那契數(shù)列的規(guī)律,可以看到數(shù)列在使用算法進行表示的時候,需要分為兩種情況,即前兩項,和第三項開始后的元素的計算。

最簡單的方法是使用遞歸進行實現(xiàn)斐波那契數(shù)列的算法:

  1. function fib(num){ 
  2.   if(num <= 1) return num; 
  3.   return fib(num - 1) + fib(num - 2); 

當然,也可以使用循環(huán)方法進行實現(xiàn):

  1. function fib(num){ 
  2.   if(num <= 1) return num; 
  3.   let num1 = 0, num2 = 1; 
  4.   for(let i = 0; i < num - 1; i++){ 
  5.     // 每次加都是前兩項之和 
  6.     let sum = num1 + num2; 
  7.     // 相加之前num2要作為下一次相加的num1 
  8.     num1 = num2; 
  9.     // 相加的結果要作為下一個num2 
  10.     num2 = sum
  11.     // 但是呢,上面兩句代碼不可交換哦 
  12.   } 
  13.   return num2; 

其實,高級程序語言編寫的程序在計算機上運行的消耗時間取決于以下因素:

  • 算法采用的策略、方法(算法的好壞)
  • 編譯產生的代碼質量(軟件性能)
  • 問題的輸入規(guī)模(輸入量的多少)
  • 機器執(zhí)行指令的速度(硬件性能)

總的來說,程序的運行時間主要取決于算法的好壞和問題的輸入規(guī)模。

時間復雜度和空間復雜度

我們都學過高斯的故事,主要內容是這樣的:在高斯上學時老師提問如何計算100以內非0自然數(shù)的和,即計算1+2+……+99+100=? 當時很多同學都在從頭加到尾計算,但是高斯并沒有忙著去計算,而是思考問題。

經過高斯觀察后發(fā)現(xiàn),第一項與最后一項的和等于第二項與倒數(shù)第二項的和一樣,都是101,同時他發(fā)現(xiàn)其他項也符合這樣的規(guī)律。而總共有50對,所以結果就是101×50=5050。于是,他成為班里第一個計算出答案的人。

告訴我們道理:磨刀不誤砍柴工,用對方法更輕松。

那么,我們仔細分析下高斯算法和常規(guī)算法的優(yōu)劣。

常規(guī)算法:

  1. function commonFunc(){ 
  2.   let sum = 0; //執(zhí)行一次 
  3.   for(let i = 1; i <= 100; i++){ //執(zhí)行n+1次 
  4.     sum += i;//執(zhí)行n次 
  5.   } 
  6.   return sum;//執(zhí)行1次 

高斯算法:

  1. function guassFunc(){ 
  2.   let sum = 0;//執(zhí)行1次 
  3.   sum = (1 * n) * n/2;//執(zhí)行1次 
  4.   return sum;//執(zhí)行1次 

如上所示,常規(guī)算法的執(zhí)行次數(shù)是2n+3次,而高斯算法的執(zhí)行次數(shù)是3次。由于首尾語句的執(zhí)行次數(shù)是相同,主要關注中間算法部分則是n次與1次的區(qū)別,很顯然高斯算法遠優(yōu)于常規(guī)算法。

算法時間復雜度

我們看下《大話數(shù)據(jù)結構》中是如何定義算法時間復雜度的。

算法時間復雜度:在進行算法分析時,語句總的執(zhí)行次數(shù)T(n)是關于問題規(guī)模n的函數(shù),進而分析得到T(n)隨n的變化情況并確定T(n)的數(shù)量級。算法的時間復雜度,就是算法的時間量度,記作:T(n)=O(f(n))。它表示隨時間規(guī)模n的增大,算法執(zhí)行時間的增長率和f(n)的增長率相同,稱作算法的漸進時間復雜度,簡稱時間復雜度。

我給你翻譯翻譯,就是說時間復雜度是用于估算程序運行時間的量度。假設算法的問題規(guī)模為n,那么操作單元數(shù)量(用于表示程序消耗的時間),隨著數(shù)據(jù)規(guī)模n的增大,算法執(zhí)行時間的增長率和f(n)的增長率相同,稱作時間復雜度O(f(n))。

T(n)=O(f(n))

  • T(n)表示代碼執(zhí)行的時間
  • n表示數(shù)據(jù)規(guī)模的大小
  • f(n)表示每行代碼執(zhí)行的次數(shù)總和
  • O表示代碼執(zhí)行時間T(n)與T(n)成正比

我們看到上面描述中提到了O()來體現(xiàn)算法時間復雜度,也被稱為大O計法。大O用于表示上界,即用于表示算法最壞情況下運行時間的上界,也就是在最壞情況下運行所花費的時間。

推導大O階方法:

  • 用常數(shù)1取代運行時間中的所有加法常數(shù)
  • 在修改后的運行函數(shù)次數(shù)中,只保留最高階項
  • 如果最高階項存在且不是1,則去除與這個項相乘的常數(shù)

接著,我們自己動手練習下算法時間復雜度的計算方法,如下:

  1. function testFunc(n){ 
  2.   for(let i = 0; i < n; i += i){ //執(zhí)行1+log2(n)次 
  3.     for(let j = 0; j < n; j++){ //執(zhí)行n+1次 
  4.       console.log("yichuan");//執(zhí)行(1+log2(n))*(n+1)次 
  5.     } 
  6.   } 

我們看到,在第一次for循環(huán)中,i+=i即i=i+i=2i,那么當2i=n時得到n=log2(n),要跳出循環(huán)即要執(zhí)行1+log2(n)次語句。而在第二次for循環(huán)中語句要執(zhí)行n+1次才能跳出循環(huán),而打印語句的執(zhí)行次數(shù)是(1+log2(n))*(n+1)次。其實采用大O記數(shù)法忽略加法常數(shù)和最高次項系數(shù),那么得到就是執(zhí)行nlogn次,記作O(nlogn)。

記住,在計算算法時間復雜度時,可以根據(jù)高階次數(shù)的實際情況忽略其加法常數(shù)和最高次項系數(shù)、對數(shù)項的底數(shù)。

常見的計數(shù)階數(shù)有:

我們可以看到常見的算法時間復雜度計算階數(shù)所耗費時間的比較:

各種時間復雜度曲線如下:

算法空間復雜度

其實,在代碼時完全是犧牲空間來換取時間。類比于算法時間復雜度,空間復雜度表示算法存儲空間與數(shù)據(jù)規(guī)模之間的增長關系。

算法空間復雜度:通過計算算法所需的存儲空間實現(xiàn),而計算公式是:S(n)=O(f(n))。

  • n表示問題的規(guī)模
  • f(n)表示語句中關于n所占存儲空間的函數(shù)
  1. function spaceFunc(n){ 
  2.   const arr = [];//第2行代碼 
  3.   arr.length = n;//第3行代碼 
  4.   for(let i = 0; i < n; i++){ 
  5.     arr[i] = i * i; 
  6.   } 
  7.    
  8.   for(let j = n - 1; j >= 0; --j){ 
  9.     console.log(arr[i]); 
  10.   } 

觀察上述代碼可得:在第2行代碼中,在內存開辟一塊空間存儲變量arr并對其賦值空數(shù)組;在第3行代碼中,將數(shù)組的長度設置為n,數(shù)組中會自動填充n個undefined;此外剩下代碼并未占據(jù)更多空間,因此整段代碼的空間復雜度為O(n)。

最壞情況和平均情況

最壞情況運行時間是這段程序在運行所耗費時間最多的情況,沒有比這更糟糕的情況。通常,我們提到的運行時間指的都是最壞情況的運行時間。

平均情況運行時間所指的是程序所期望的平均時間,但是在實際測試中,很難通過分析得到,需要通過一定數(shù)量的實驗數(shù)據(jù)和估算。

我們知道,在進行查找n個隨機數(shù)中查找某個數(shù)字,最好的情況是查找第1個數(shù)字就找到,此時的時間復雜度是O(1),而最壞的情況下是查找到第n個數(shù)字才找到。那么,在查找數(shù)字的算法中最壞情況的時間復雜度是O(n),平均情況的時間復雜度是O((1+n)/2)即O(n/2)。

小結

在本文中,筆者介紹了什么是算法、為什么要用算法、如何衡量算法的時間復雜度和空間復雜度以及算法的最壞情況和平均情況的概念。

 

責任編輯:姜華 來源: 前端萬有引力
相關推薦

2024-04-25 08:33:25

算法時間復雜度空間復雜度

2021-01-05 10:41:42

算法時間空間

2019-11-18 12:41:35

算法Python計算復雜性理論

2020-12-30 05:35:56

數(shù)據(jù)結構算法

2021-09-17 10:44:50

算法復雜度空間

2020-02-06 13:59:48

javascript算法復雜度

2020-11-30 06:26:31

算法時間表示法

2021-06-29 08:28:12

算法順序表數(shù)據(jù)

2021-01-21 05:22:36

排序算法選擇

2021-07-29 11:30:54

遞歸算法

2021-11-01 12:55:43

網絡

2009-07-09 10:45:16

C#基本概念復雜度遞歸與接口

2022-08-05 14:23:08

機器學習計算復雜度算法

2021-10-15 09:43:12

希爾排序復雜度

2020-10-15 07:13:53

算法監(jiān)控數(shù)據(jù)

2017-04-27 10:38:28

排序算法比較分析

2024-06-05 09:35:00

2024-05-20 09:04:29

時間復雜度代碼

2018-07-31 09:52:38

機器學習排序算法圖像處理

2020-12-30 09:20:27

代碼
點贊
收藏

51CTO技術棧公眾號

少妇高潮喷水在线观看| 日韩激情av在线| 久久av资源网| 日韩精品在线一区| 国产精品视频公开费视频| 亚洲成人av免费观看| 可以直接在线观看的av| 免费一级欧美在线大片| 久久久久久日产精品| 欧美国产极速在线| av中文字幕网址| 国产理论电影在线观看| 亚洲麻豆av| 日韩一区二区三区四区五区六区| 日韩精品大片| 台湾佬中文在线| 欧美一区自拍| 亚洲中国最大av网站| 91免费精品视频| 四虎地址8848| 日韩一区二区三免费高清在线观看| 久久精品夜夜夜夜久久| 亚洲aaa激情| 暗呦丨小u女国产精品| 免费成人高清在线视频| 国产精品午夜电影| 国产不卡精品视男人的天堂| 波多野结衣一本| 正在播放日韩精品| 久久综合狠狠综合久久综合88| 97精品欧美一区二区三区| 91九色蝌蚪porny| av电影院在线看| 成人午夜激情影院| 97在线精品视频| 久久国产高清视频| 九色精品蝌蚪| 色婷婷一区二区三区四区| 欧美日韩在线不卡一区| 秋霞av一区二区三区| 国产一区二区三区四区| 欧美又粗又大又爽| 一区在线电影| 精品毛片在线观看| 亚洲日本激情| 欧美富婆性猛交| 欧美一区二区三区爽爽爽| 韩国三级大全久久网站| 欧美唯美清纯偷拍| 成年人视频在线免费| 1024免费在线视频| 国产精品一区二区久久精品爱涩| 欧美激情亚洲视频| 人妻熟女aⅴ一区二区三区汇编| 亚洲精品高潮| 欧美色另类天堂2015| 日韩精品一区二区三区外面 | 久久婷婷影院| 深夜成人在线观看| 丝袜熟女一区二区三区| 亚洲天堂av资源在线观看| 91精品欧美久久久久久动漫| 99久久国产综合精品五月天喷水| 精品无人乱码| 国产在线视频精品一区| 欧美在线观看网址综合| 亚洲天堂网av在线| 一级欧洲+日本+国产| 日韩福利在线播放| 在线能看的av网站| 精品国产亚洲一区二区三区在线| 欧美丰满一区二区免费视频| 99爱视频在线| 成人在线免费看黄| 91啦中文在线观看| 99久久自偷自偷国产精品不卡| 9i看片成人免费看片| 一区二区三区午夜探花| 欧美成人精品激情在线观看| 午夜理伦三级做爰电影| 97青娱国产盛宴精品视频| 在线观看亚洲精品视频| 999一区二区三区| 在线免费看黄网站| 亚洲欧美视频一区| 色综合视频二区偷拍在线| 免费观看毛片网站| 国产一区二区三区四区五区入口| 亚洲淫片在线视频| 婷婷在线免费视频| 日韩成人伦理电影在线观看| 国产精品入口免费视频一| 国产精品亚洲欧美在线播放| 久久一区视频| 成人高h视频在线| а中文在线天堂| 在线观看日韩av电影| 久久这里只有精品视频首页| 日本猛少妇色xxxxx免费网站| 丝袜连裤袜欧美激情日韩| 精品国产在天天线2019| 黄色a级三级三级三级| 成人看片爽爽爽| 亚洲一级黄色av| 91网站免费视频| 中文字幕免费一区二区三区| 欧美在线视频导航| 欧美日韩精品区| 91久久午夜| 国产精品一区二区三| 国产一级精品毛片| 国产高清视频一区| 99精品在线直播| 青青草在线视频免费观看| 99精品视频在线观看| 国产日韩欧美二区| 日韩中文字幕免费在线观看| 国产欧美日韩激情| 亚洲免费在线精品一区| 成人免费在线视频网| 久久婷婷国产综合国色天香| 色婷婷777777仙踪林| xvideos国产在线视频| 欧美性高潮床叫视频| 免费在线观看日韩av| 北条麻妃在线一区二区免费播放| 一区二区三区日韩在线| 美国精品一区二区| 91精品秘密在线观看| 精品中文字幕在线| 日本一区二区免费在线观看| 国产一级久久| 国产精品av免费在线观看| 隣の若妻さん波多野结衣| 99久久久久免费精品国产| 久久资源亚洲| 免费av不卡| 亚洲午夜一区二区| 黑人糟蹋人妻hd中文字幕| 我爱我色成人网| 欧美日本一道本| 国产ts在线观看| 天天射综合网视频| 久久人人爽人人爽人人片av高请| 一级片中文字幕| 国产69精品久久777的优势| 蜜桃视频成人| 在线天堂新版最新版在线8| 精品成人一区二区三区四区| 久久免费小视频| 日韩精品一级二级 | 亚洲精品高清视频在线观看| 国产精品久久国产| 精品中文字幕一区二区三区四区| 日韩一区二区三区国产| 国产亚洲精品久久777777| 狠狠色丁香九九婷婷综合五月| 俄罗斯精品一区二区| 邻居大乳一区二区三区| 日韩欧美在线网址| 少妇大叫太粗太大爽一区二区| 一区二区三区国产在线| 成人亚洲欧美一区二区三区| 69av亚洲| 欧美一区二区在线视频| 国产乱了高清露脸对白| 999国产精品视频| 91精品国产色综合| 国产精品毛片一区二区在线看舒淇 | 在线免费观看黄| 欧美日韩国产在线观看| 男女做暖暖视频| 国产v综合v亚洲欧| 欧美视频在线免费播放| 国产精品一区二区三区av麻 | 精品黑人一区二区三区| 国产精品麻豆视频| 全黄性性激高免费视频| 精品亚洲精品| 久久福利网址导航| 丁香六月天婷婷| 精品久久久久人成| 在线精品视频播放| 国产乱码精品| 亚洲色图自拍| 澳门av一区二区三区| 欧美不卡视频一区| sm捆绑调教视频| 粉嫩13p一区二区三区| 国产日产欧美视频| 天堂美国久久| 精品无人区一区二区三区竹菊| 亚洲国产精品精华素| 欧美视频在线不卡| 久久婷婷国产麻豆91| 久久精品免费在线观看| 国产午夜福利100集发布| 视频国产一区| 日产精品久久久一区二区福利| 丁香六月色婷婷| 欧美综合天天夜夜久久| 欧美日韩大片在线观看| 国内一区二区视频| 日韩欧美国产综合在线| 日韩成人激情| 国产精品免费久久久久影院| 亚洲大胆人体大胆做受1| 亚洲人av在线影院| 在线免费观看av网址| 亚洲精品视频在线看| 日韩精品视频网址| 亚洲一区久久| 久久一区二区三区欧美亚洲| 粉嫩一区二区三区在线观看| 日韩网站免费观看高清| 五月天激情婷婷| 欧美一区二区在线免费观看| 一级片在线免费播放| 亚洲v精品v日韩v欧美v专区| 亚洲一级Av无码毛片久久精品| 日韩av电影天堂| 亚洲精品一区二区三| 噜噜噜天天躁狠狠躁夜夜精品| 成人国产在线激情| 成人日韩av| 欧美成aaa人片免费看| 激情视频在线观看免费| 亚洲国产精品小视频| 欧美在线观看不卡| 亚洲成av人片www| 欧美极品aaaaabbbbb| 国产精品国产三级国产普通话三级| 色播五月综合网| 欧美在线不卡| 久久99影院| 小明成人免费视频一区| 久久亚洲国产精品| 91社区在线观看| 亚洲色图狂野欧美| 日韩电影免费| 日韩精品中文字幕在线观看| 中文字幕欧美人妻精品一区蜜臀| 亚洲欧美日韩在线播放| 国产三级在线观看完整版| 久久久久亚洲综合| 国产中年熟女高潮大集合| 久久精品72免费观看| www.一区二区.com| 一区二区三区日本久久久| 国产精品色悠悠| 一区在线影院| 国产区亚洲区欧美区| 日本高清在线观看| 亚洲成avwww人| 国产午夜无码视频在线观看 | 亚洲国产第一页| 少妇av在线播放| 日韩黄在线观看| 你懂的在线观看视频网站| 亚洲欧美国产制服动漫| 国产又大又黑又粗| 欧美群妇大交群的观看方式| 亚洲手机在线观看| 欧美日韩激情视频| 亚洲波多野结衣| 亚洲乱码国产乱码精品精98午夜 | 福利在线播放| 日韩在线观看av| 久草在线资源站资源站| 97超碰国产精品女人人人爽 | 亚洲影影院av| 激情av综合| 热re99久久精品国99热蜜月| 免费一级欧美片在线观看网站| 99久久精品免费看国产四区 | 亚洲v欧美v另类v综合v日韩v| 日韩欧美一区免费| 欧美日韩激情四射| 国产精品日韩| 污色网站在线观看| 国产成人精品亚洲午夜麻豆| 国产xxxxxxxxx| 国产一区视频在线看| 秘密基地免费观看完整版中文 | 朝桐光av在线| 婷婷六月综合网| 在线免费看91| 精品国产伦一区二区三区观看方式| 可以在线观看的av网站| 久久影院资源网| 亚洲伊人av| 久久久久国产一区二区三区| 中文字幕乱码中文乱码51精品| 国产精品美女免费| 97超碰成人| 神马影院一区二区三区| 激情亚洲成人| 天天视频天天爽| 日韩国产欧美在线播放| 色黄视频免费看| 久久精品欧美一区二区三区麻豆| 放荡的美妇在线播放| 一本一道综合狠狠老| 精品人妻少妇AV无码专区| 亚洲香蕉av在线一区二区三区| 午夜伦理在线视频| 国产精品人人做人人爽| 韩国女主播一区二区三区| 国产精品v欧美精品v日韩| 精品国产一区二区三区四区| 久久综合久久久| 天天射天天综合网| 高清一区二区视频| 久久国内精品视频| 无码人妻精品一区二区三区温州| av一区二区三区四区| 手机免费观看av| 欧美小视频在线| 日韩在线视频第一页| 久久久91精品国产一区不卡| 2021国产在线| 欧美高清激情视频| 国产成人免费| 日本免费高清一区| 亚洲中午字幕| 日韩av无码一区二区三区不卡| 亚洲欧美日韩人成在线播放| 做爰无遮挡三级| 亚洲色图国产精品| 老司机成人影院| 久久99精品久久久久久久青青日本| 欧美成人tv| 伊人成人免费视频| 18欧美亚洲精品| 欧美久久久久久久久久久久| 欧美日韩精品一区二区天天拍小说| 黄色av免费在线观看| 欧美亚洲另类视频| 精品视频自拍| 免费 成 人 黄 色| 白白色 亚洲乱淫| 久久久国产高清| 亚洲九九九在线观看| 欧美办公室脚交xxxx| 国产精品日韩一区| 欧洲grand老妇人| 一区二区三区免费播放| 日本一区二区成人| 在线观看视频二区| 色天天综合狠狠色| 欧美一区二区三区婷婷| 日本三级福利片| 久久久成人网| 中文字幕久久久久久久| 26uuu亚洲综合色| 天天干天天干天天| 在线播放国产一区中文字幕剧情欧美| 桃子视频成人app| 亚洲国产一区二区三区在线播| 三级欧美韩日大片在线看| 精品无码国产污污污免费网站| 在线影院国内精品| 日本中文字幕伦在线观看| 久久男人的天堂| 欧美激情影院| 国产精品天天av精麻传媒| 国产成人高清在线| 国产奶水涨喷在线播放| 日韩精品在线播放| 亚洲淫成人影院| 亚洲高清视频一区| 国产原创一区二区三区| 国产第一页在线播放| 91精品国产综合久久久久久久 | 国产精品扒开腿爽爽爽视频| 2023国产精华国产精品| 久久久性生活视频| 国产视频一区在线播放| 国产女18毛片多18精品| 精品视频在线播放免| 日韩中文视频| 国产女主播av| 久久免费午夜影院| 国产精品国产一区二区三区四区 | 成人公开免费视频| 久久久精品日本| 私拍精品福利视频在线一区| 中文字幕在线综合| 亚洲成av人综合在线观看| 91caoporm在线视频| 成人欧美一区二区| 日韩福利视频导航| 久久中文字幕在线观看| 伊人激情综合网| y111111国产精品久久久| 91国产精品视频在线观看| 亚欧色一区w666天堂| 97在线观看免费观看高清| 国产一区二区久久久| 久久精品二区亚洲w码|