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

關于時間復雜度,你不知道的都在這里

開發 前端
相信每一位錄友都接觸過時間復雜度,但又對時間復雜度的認識處于一種朦朧的狀態,所以是時候對時間復雜度來一個深度的剖析了。

[[412050]]

相信每一位錄友都接觸過時間復雜度,但又對時間復雜度的認識處于一種朦朧的狀態,所以是時候對時間復雜度來一個深度的剖析了。

本篇從如下六點進行分析:

  • 究竟什么是時間復雜度
  • 什么是大O
  • 不同數據規模的差異
  • 復雜表達式的化簡
  • O(logn)中的log是以什么為底?
  • 舉一個例子

這可能是你見過對時間復雜度分析最通透的一篇文章。

究竟什么是時間復雜度

時間復雜度是一個函數,它定性描述該算法的運行時間。

我們在軟件開發中,時間復雜度就是用來方便開發者估算出程序運行的答題時間。

那么該如何估計程序運行時間呢,通常會估算算法的操作單元數量來代表程序消耗的時間,這里默認CPU的每個單元運行消耗的時間都是相同的。

假設算法的問題規模為n,那么操作單元數量便用函數f(n)來表示,隨著數據規模n的增大,算法執行時間的增長率和f(n)的增長率相同,這稱作為算法的漸近時間復雜度,簡稱時間復雜度,記為 O(f(n))。

什么是大O

這里的大O是指什么呢,說到時間復雜度,大家都知道O(n),O(n^2),卻說不清什么是大O。

算法導論給出的解釋:大O用來表示上界的,當用它作為算法的最壞情況運行時間的上界,就是對任意數據輸入的運行時間的上界。

同樣算法導論給出了例子:拿插入排序來說,插入排序的時間復雜度我們都說是O(n^2) 。

輸入數據的形式對程序運算時間是有很大影響的,在數據本來有序的情況下時間復雜度是O(n),但如果數據是逆序的話,插入排序的時間復雜度就是O(n^2),也就對于所有輸入情況來說,最壞是O(n^2) 的時間復雜度,所以稱插入排序的時間復雜度為O(n^2)。

同樣的同理再看一下快速排序,都知道快速排序是O(nlogn),但是當數據已經有序情況下,快速排序的時間復雜度是O(n^2) 的,所以嚴格從大O的定義來講,快速排序的時間復雜度應該是O(n^2)。

但是我們依然說快速排序是O(nlogn)的時間復雜度,這個就是業內的一個默認規定,這里說的O代表的就是一般情況,而不是嚴格的上界。如圖所示:

我們主要關心的還是一般情況下的數據形式。

面試中說道算法的時間復雜度是多少指的都是一般情況。但是如果面試官和我們深入探討一個算法的實現以及性能的時候,就要時刻想著數據用例的不一樣,時間復雜度也是不同的,這一點是一定要注意的。

不同數據規模的差異

如下圖中可以看出不同算法的時間復雜度在不同數據輸入規模下的差異。

時間復雜度,不同數據規模的差異

在決定使用哪些算法的時候,不是時間復雜越低的越好(因為簡化后的時間復雜度忽略了常數項等等),要考慮數據規模,如果數據規模很小甚至可以用O(n^2)的算法比O(n)的更合適(在有常數項的時候)。

就像上圖中 O(5n^2) 和 O(100n) 在n為20之前 很明顯 O(5n^2)是更優的,所花費的時間也是最少的。

那為什么在計算時間復雜度的時候要忽略常數項系數呢,也就說O(100n) 就是O(n)的時間復雜度,O(5n^2) 就是O(n^2)的時間復雜度,而且要默認O(n) 優于O(n^2) 呢 ?

這里就又涉及到大O的定義,因為大O就是數據量級突破一個點且數據量級非常大的情況下所表現出的時間復雜度,這個數據量也就是常數項系數已經不起決定性作用的數據量。

例如上圖中20就是那個點,n只要大于20 常數項系數已經不起決定性作用了。

所以我們說的時間復雜度都是省略常數項系數的,是因為一般情況下都是默認數據規模足夠的大,基于這樣的事實,給出的算法時間復雜的的一個排行如下所示:

O(1)常數階 < O(logn)對數階 < O(n)線性階 < O(n^2)平方階 < O(n^3)(立方階) < O(2^n) (指數階)

但是也要注意大常數,如果這個常數非常大,例如10^7 ,10^9 ,那么常數就是不得不考慮的因素了。

復雜表達式的化簡

有時候我們去計算時間復雜度的時候發現不是一個簡單的O(n) 或者O(n^2), 而是一個復雜的表達式,例如:

  1. O(2*n^2 + 10*n + 1000) 

那這里如何描述這個算法的時間復雜度呢,一種方法就是簡化法。

去掉運行時間中的加法常數項 (因為常數項并不會因為n的增大而增加計算機的操作次數)。

  1. O(2*n^2 + 10*n) 

去掉常數系數(上文中已經詳細講過為什么可以去掉常數項的原因)。

  1. O(n^2 + n) 

只保留保留最高項,去掉數量級小一級的n (因為n^2 的數據規模遠大于n),最終簡化為:

  1. O(n^2) 

如果這一步理解有困難,那也可以做提取n的操作,變成O(n(n+1)) ,省略加法常數項后也就別變成了:

  1. O(n^2) 

所以最后我們說:這個算法的算法時間復雜度是O(n^2) 。

也可以用另一種簡化的思路,其實當n大于40的時候, 這個復雜度會恒小于O(3 * n^2), O(2 * n^2 + 10 * n + 1000) < O(3 * n^2),所以說最后省略掉常數項系數最終時間復雜度也是O(n^2)。

O(logn)中的log是以什么為底?

平時說這個算法的時間復雜度是logn的,那么一定是log 以2為底n的對數么?

其實不然,也可以是以10為底n的對數,也可以是以20為底n的對數,但我們統一說 logn,也就是忽略底數的描述。

為什么可以這么做呢?如下圖所示:

時間復雜度1.png

假如有兩個算法的時間復雜度,分別是log以2為底n的對數和log以10為底n的對數,那么這里如果還記得高中數學的話,應該不難理解以2為底n的對數 = 以2為底10的對數 * 以10為底n的對數。

而以2為底10的對數是一個常數,在上文已經講述了我們計算時間復雜度是忽略常數項系數的。

抽象一下就是在時間復雜度的計算過程中,log以i為底n的對數等于log 以j為底n的對數,所以忽略了i,直接說是logn。

這樣就應該不難理解為什么忽略底數了。

舉一個例子

通過這道面試題目,來分析一下時間復雜度。題目描述:找出n個字符串中相同的兩個字符串(假設這里只有兩個相同的字符串)。

如果是暴力枚舉的話,時間復雜度是多少呢,是O(n^2)么?

這里一些同學會忽略了字符串比較的時間消耗,這里并不像int 型數字做比較那么簡單,除了n^2 次的遍歷次數外,字符串比較依然要消耗m次操作(m也就是字母串的長度),所以時間復雜度是O(m * n * n)。

接下來再想一下其他解題思路。

先排對n個字符串按字典序來排序,排序后n個字符串就是有序的,意味著兩個相同的字符串就是挨在一起,然后在遍歷一遍n個字符串,這樣就找到兩個相同的字符串了。

那看看這種算法的時間復雜度,快速排序時間復雜度為O(nlogn),依然要考慮字符串的長度是m,那么快速排序每次的比較都要有m次的字符比較的操作,就是O(m * n * logn) 。

之后還要遍歷一遍這n個字符串找出兩個相同的字符串,別忘了遍歷的時候依然要比較字符串,所以總共的時間復雜度是 O(m * n * logn + n * m)。

我們對O(m * n * logn + n * m) 進行簡化操作,把m * n提取出來變成 O(m * n * (logn + 1)),再省略常數項最后的時間復雜度是 O(m * n * logn)。

最后很明顯O(m * n * logn) 要優于O(m * n * n)!

所以先把字符串集合排序再遍歷一遍找到兩個相同字符串的方法要比直接暴力枚舉的方式更快。

這就是我們通過分析兩種算法的時間復雜度得來的。

當然這不是這道題目的最優解,我僅僅是用這道題目來講解一下時間復雜度。

總結

本篇講解了什么是時間復雜度,復雜度是用來干什么,以及數據規模對時間復雜度的影響。

還講解了被大多數同學忽略的大O的定義以及log究竟是以誰為底的問題。

再分析了如何簡化復雜的時間復雜度,最后舉一個具體的例子,把本篇的內容串起來。

相信看完本篇,大家對時間復雜度的認識會深刻很多!

 

責任編輯:武曉燕 來源: 代碼隨想錄
相關推薦

2020-12-08 11:08:55

時間復雜度軟件

2021-02-01 08:39:26

JTAG接口Jlink

2017-08-29 11:21:03

微軟

2021-06-17 13:40:47

區塊鏈比特幣公有鏈

2021-12-09 08:16:40

JVM參數系統

2020-08-11 11:00:16

左值引用右值引用移動語義

2022-10-12 08:22:44

Guava工具Collection

2021-07-01 09:00:00

安全數字化轉型滲透

2020-06-02 07:00:00

會話安全黑客攻擊

2018-04-26 16:15:02

數據庫MySQLMySQL 8.0

2024-07-02 11:16:21

2019-11-04 09:07:48

DevOps互聯網IT

2023-09-11 08:51:23

LinkedList雙向鏈表線程

2020-06-12 07:36:33

Redis

2021-05-17 07:04:07

動態代理面試

2020-08-12 09:32:31

小米MIUI

2020-03-18 18:20:19

區塊鏈數字貨幣比特幣

2019-04-24 08:31:43

分布式限流kafka

2019-12-25 14:00:26

數據科學人工智能科學家

2021-12-27 08:00:00

Kubernetes容器安全
點贊
收藏

51CTO技術棧公眾號

精品亚洲自拍| 中文字幕九色91在线| 中文字幕av一区二区三区谷原希美| 久久人妻精品白浆国产| 男人av资源站| 国产综合色区在线观看| 高清不卡在线观看av| 视频直播国产精品| 成人在线观看黄| h视频在线免费观看| 美女网站一区| 精品美女久久久久久免费| 91成人在线播放| jjzz黄色片| 黄色免费在线看| 狠狠色丁香婷综合久久| 一区二区三区四区在线观看视频| 免费国产a级片| 男人天堂手机在线观看| 亚洲欧美一级二级三级| 制服.丝袜.亚洲.另类.中文| 亚洲国产一区二区三区在线 | 中文字幕av一区二区三区免费看 | 亚洲一区二区三区四区| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品精品视频一区二区三区| 99re久久精品国产| 丁香花在线高清完整版视频 | 成人午夜一级二级三级| www.日本高清视频| av成人在线播放| 亚洲国产精品v| 精品在线一区| 日韩在线视频免费播放| 欧美变态网站| 色天使色偷偷av一区二区| 欧美一级日本a级v片| 91香蕉在线视频| 窝窝社区一区二区| 日韩欧美国产中文字幕| 日韩一区二区三区高清| 在线观看黄色国产| 自产国语精品视频| 精品欧美乱码久久久久久| 国产毛片视频网站| 成人福利网站| 亚洲激情中文1区| 久久综合九色欧美狠狠| 亚洲av无码乱码国产精品fc2| 国产一区毛片| 制服丝袜亚洲色图| 中文字幕22页| 美女网站视频在线| 久久你懂得1024| 91精品国产自产在线老师啪| 欧美三根一起进三p| 老司机在线精品视频| 精品国产在天天线2019| 欧美日韩第二页| jizz视频在线观看| 国产高清一区日本| 欧美最猛黑人xxxx黑人猛叫黄| 农村老熟妇乱子伦视频| 2023国产精华国产精品| 日韩欧美一区二区三区| 日韩视频第二页| 色综合一本到久久亚洲91| 欧美亚洲国产bt| 996这里只有精品| 免费在线超碰| 国产精品一区在线观看你懂的| 97精品国产97久久久久久免费| 日韩视频在线观看免费视频| 北条麻妃国产九九九精品小说| 日韩一区二区精品葵司在线| 任你操这里只有精品| 欧美日韩五区| 五月天精品一区二区三区| 青青草国产精品视频| 欧美电影网址| 亚洲高清在线精品| 黄色高清视频网站| 黄色av网址在线免费观看| 丁香婷婷深情五月亚洲| 国产在线观看一区二区三区 | 亚洲 日韩 国产第一区| 成人免费一级视频| 麻豆91精品视频| 欧洲美女免费图片一区| 在线播放国产一区| 国产·精品毛片| 日本午夜精品一区二区| 老司机在线永久免费观看| 91网上在线视频| 91久久偷偷做嫩草影院| 在线中文字幕网站| 成人性生交大片免费看中文 | 丰满岳乱妇一区二区| 欧美少妇激情| 91久久久免费一区二区| 天天干天天色天天干| 日本久久免费| 日韩精品自拍偷拍| 香蕉视频xxxx| 久久亚洲精精品中文字幕| 欧美图片一区二区三区| 一级黄色大片免费看| 国产精品一区二区三区av| 欧美三区免费完整视频在线观看| 黄色高清无遮挡| 亚洲日本va午夜在线电影| 在线播放国产精品| 九九热在线视频播放| 韩国成人在线视频| 日本一区免费| 男人av在线播放| 精品久久久久久久大神国产| 中文字幕国产高清| 国产在线观看91一区二区三区| 欧美精品电影免费在线观看| 久久久91视频| 亚洲老妇激情| 国产成人综合亚洲| 中文字幕欧美在线观看| 麻豆91小视频| 日韩精品第一页| 美女高潮在线观看| 欧美xxx久久| 日本福利片在线观看| 女生裸体视频一区二区三区| 国产精品av在线播放| 三级在线观看| 午夜在线一区二区| 日本午夜在线亚洲.国产| 亚洲欧美一区二区三区在线观看| 久久婷婷激情| 成人免费网视频| 9色在线观看| 亚洲三级免费电影| 日韩激情视频一区二区| 久久男人av资源站| 日韩一卡二卡三卡| jizz亚洲少妇| 国产凹凸在线观看一区二区| 亚洲第一综合| 激情中国色综合| 在线看福利67194| 伊人久久成人网| 国产精品久久久久久久久动漫| 日本一道在线观看| 色戒汤唯在线观看| 亚洲级视频在线观看免费1级| 91激情视频在线观看| 99tv成人| 欧美大片欧美激情性色a∨久久| 天海翼一区二区| a在线欧美一区| 在线观看欧美激情| 国产网站在线| 欧美巨大另类极品videosbest | 国产精品日韩在线一区| www夜片内射视频日韩精品成人| 91在线丨porny丨国产| 亚洲精品高清视频| 日韩美女在线| 精品亚洲一区二区| 91成人福利视频| 成人网在线免费视频| 精品国产一区三区| 国产精品嫩模av在线| 91精品视频一区| 欧美女优在线观看| 在线观看91视频| 欧美无人区码suv| 午夜亚洲视频| 亚洲亚洲精品三区日韩精品在线视频| heyzo高清中文字幕在线| 欧美日韩成人在线一区| 欧美图片一区二区| 亚洲经典在线看| 亚洲综合在线做性| 最新97超碰在线| 日韩视频在线你懂得| 天天综合网入口| 中文字幕av一区二区三区免费看 | 久久久久久综合| 成人av在线不卡| 天天躁日日躁狠狠躁欧美巨大小说| 国产福利精品av综合导导航| av在线播放观看| 亚洲欧美激情另类校园| 日本五十路女优| 国产不卡在线一区| 国产精品wwwww| 国产精品x453.com| 蜜桃精品久久久久久久免费影院| 欧美亚洲福利| 欧美一区二区三区精品电影| 日本毛片在线观看| 欧美日韩一区国产| 日韩精品在线不卡| 18成人在线视频| 中文字幕一区二区三区四| 日韩在线欧美| 国产精品久久久久9999| 牛牛精品在线视频| 中文字幕日韩专区| 天堂av在线免费观看| 黑人狂躁日本妞一区二区三区| 欧美日韩生活片| 91理论电影在线观看| 91亚洲一区二区| 免播放器亚洲一区| 亚洲一区精品视频| 香蕉人人精品| 国产精品18毛片一区二区| av人人综合网| 精品国偷自产在线| av天堂一区二区三区| 伊人一区二区三区| 亚洲天堂av中文字幕| 久久综合色播五月| 无码成人精品区在线观看| 国产一区视频导航| 2018中文字幕第一页| 欧美激情极品| 波多野结衣久草一区| 欧美xxxhd| 欧美激情精品久久久久久久变态| 五月香视频在线观看| 91精品久久久久久久99蜜桃 | 欧美自拍资源在线| 女同久久另类99精品国产| av免费观看久久| 玖玖精品一区| 亚洲影院高清在线| 国产999精品在线观看| 国产欧美在线视频| 色综合久久久| 成人高清视频观看www| 日韩午夜电影免费看| 国产日韩在线一区| 91成人小视频| 97激碰免费视频| 678在线观看视频| 97久久国产精品| 日产福利视频在线观看| 欧美亚洲成人xxx| 蜜臀国产一区| 欧美老少做受xxxx高潮| 污视频在线免费观看| 欧美三区免费完整视频在线观看| 尤物视频免费观看| 亚洲精品国产第一综合99久久 | 国产情侣久久| 相泽南亚洲一区二区在线播放| 欧美精美视频| 天堂√在线观看一区二区| 成人情趣视频| 色哟哟免费网站| 在线精品一区| 超碰成人在线免费观看| 亚洲xxx拳头交| 日本精品一区二区三区视频 | 久久精品欧美视频| 免费污视频在线观看| 91精品国产高清自在线看超| 这里有精品可以观看| 欧美成人性色生活仑片| 黄色电影免费在线看| 最近中文字幕2019免费| 91亚洲天堂| 最近2019中文字幕一页二页| caoporn97在线视频| 国外成人在线视频| 黄色网址在线免费| 久久久视频精品| 欧美成人精品一区二区男人小说| 国产欧美久久一区二区| 丁香六月综合| 成人激情视频小说免费下载| 亚洲精品在线a| 日本一区免费观看| 中文字幕一区二区三区久久网站 | 亚洲精品一区二区三| 午夜亚洲福利| 5月婷婷6月丁香| 精品福利电影| 草草草在线视频| 国产成人精品亚洲日本在线桃色| 欧美熟妇一区二区| 亚洲欧美经典视频| 成人免费毛片xxx| 国产精品毛片久久久久久| 久久精品国产亚洲av麻豆| 国产精品美女久久久久高潮| 国产性生活网站| 欧美三级电影网| 图片区 小说区 区 亚洲五月| 国产一区二区三区在线观看视频| 日韩精品视频无播放器在线看 | 大地资源高清在线视频观看| 精品国产乱码久久久久久婷婷 | 日韩欧美a级片| 欧美福利视频导航| 国产在线超碰| 97国产精品久久| 欧美在线se| 欧美成ee人免费视频| 亚洲视频一区| 妞干网视频在线观看| 秋霞av亚洲一区二区三| 天天操天天摸天天爽| 日韩av成人高清| 中文字幕人妻一区二区三区| www.亚洲免费av| 性欧美疯狂猛交69hd| 在线视频国内一区二区| 天堂网在线中文| 国产网站欧美日韩免费精品在线观看 | 久久精品一区二区三| 欧美精品在欧美一区二区少妇| 青青草视频在线免费观看| 久久久久久久999精品视频| 亚洲欧美久久精品| 亚洲一区二区三区精品视频| 久久久国产亚洲精品| 色一情一乱一伦一区二区三区日本| 老司机午夜精品视频在线观看| 日本一级大毛片a一| 亚洲欧美国产77777| 亚洲一级黄色大片| 中文字幕不卡在线视频极品| 天天综合网站| 日韩av影视| 日韩精品一级二级| 久久综合在线观看| ㊣最新国产の精品bt伙计久久| 欧美另类高清videos的特点| 亚洲色图欧美制服丝袜另类第一页| av男人的天堂在线| 国产91色在线| 国产91精品对白在线播放| 国模吧无码一区二区三区| 美女一区二区三区在线观看| 人妻视频一区二区| 91福利在线观看| 99青草视频在线播放视| 国产精品一区二区性色av| 日韩国产一区| www.com污| 伊人色综合久久天天人手人婷| 国产特级黄色片| 日韩精品免费在线播放| 欧美日韩视频在线播放| 国产日产亚洲精品| 国产精品久久占久久| 亚洲一区二区三区四区精品| 一区二区三区四区高清精品免费观看 | 国产呦萝稀缺另类资源| 国内偷拍精品视频| 亚洲成色777777女色窝| 在线激情网站| 91久久在线播放| 欧美日本一区二区视频在线观看 | 中文字幕+乱码+中文| 久久在线精品视频| 成人av免费电影网站| 日本不卡一区二区三区在线观看 | 91久久综合亚洲鲁鲁五月天| 正在播放日韩欧美一页| 日本三级日本三级日本三级极| 欧美日韩中文字幕| 中文字幕日本在线观看| 18成人免费观看网站下载| 日韩一级欧洲| 激情成人在线观看| 午夜电影一区二区三区| av在线亚洲天堂| 海角国产乱辈乱精品视频| 亚洲第一二三区| 黄网站欧美内射| 国产午夜亚洲精品理论片色戒 | 免费高清在线视频一区·| 国产精品免费人成网站酒店| 亚洲电影在线看| 国产91在线精品| 亚洲 自拍 另类小说综合图区| 国产一区二区电影| 日韩欧美视频在线免费观看| 在线亚洲欧美视频| 成人爽a毛片| 少妇大叫太大太粗太爽了a片小说| 91网上在线视频| 国产熟女一区二区丰满| 国产91在线播放九色快色| 欧美区亚洲区| 女人18毛片毛片毛片毛片区二| 亚洲国产精品成人精品| **日韩最新|