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

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

開發 前端
相信每一位錄友都接觸過時間復雜度,「代碼隨想錄」已經也講了上百道經典題目了,是時候對時間復雜度來一個深度的剖析了,很早之前就寫過一篇,當時文章還沒有人看,Carl感覺有價值的東西值得讓更多的人看到,哈哈。

[[356326]]

相信每一位錄友都接觸過時間復雜度,「代碼隨想錄」已經也講了上百道經典題目了,是時候對時間復雜度來一個深度的剖析了,很早之前就寫過一篇,當時文章還沒有人看,Carl感覺有價值的東西值得讓更多的人看到,哈哈。

所以重新整理的時間復雜度文章,正式和大家見面了!

究竟什么是時間復雜度

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

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

那么該如何估計程序運行時間呢,通常會估算算法的操作單元數量來代表程序消耗的時間,這里默認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,也就是忽略底數的描述」。

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

 

假如有兩個算法的時間復雜度,分別是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究竟是以誰為底的問題。

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

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

本文轉載自微信公眾號「代碼隨想錄」,可以通過以下二維碼關注。轉載本文請聯系代碼隨想錄公眾號。

 

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

2021-07-19 08:33:56

時間復雜度大O

2021-02-01 08:39:26

JTAG接口Jlink

2017-08-29 11:21:03

微軟

2021-06-17 13:40:47

區塊鏈比特幣公有鏈

2020-08-11 11:00:16

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

2021-12-09 08:16:40

JVM參數系統

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技術棧公眾號

国产精品美女久久久久av爽李琼| 免费成人在线观看| 亚洲女成人图区| 国产精品视频分类| 欧美黑人猛交| 久久久精品国产免大香伊| 成人黄色在线免费| 亚欧洲精品在线视频| 精品日韩免费| 精品国产3级a| 99热手机在线| 国产免费拔擦拔擦8x高清在线人 | 久久偷拍免费视频| 99久久久成人国产精品| 日韩欧美国产网站| 欧美 亚洲 视频| 成人在线二区| av网站一区二区三区| 91精品久久久久久久久中文字幕| 亚洲另类欧美日韩| 亚洲色图欧美| 中文字幕9999| 亚欧洲乱码视频| 一区二区在线免费播放| 欧美午夜一区二区三区免费大片| 黄色国产一级视频| a视频在线观看| 国产精品乱子久久久久| 欧美久久电影| 欧美视频久久久| 国产在线精品一区在线观看麻豆| 国产成人精品综合| 亚洲国产成人精品激情在线| 欧美freesex交免费视频| 国产一区二区三区视频在线观看| 成人区人妻精品一区二| 欧美大片91| 欧美猛男男办公室激情| 天天爽人人爽夜夜爽| av综合电影网站| 精品久久香蕉国产线看观看亚洲| 免费网站永久免费观看| a毛片在线看免费观看| 国产精品夫妻自拍| 三区精品视频| 成年人在线观看| 国产欧美一区二区精品忘忧草| 久精品国产欧美| 天堂在线视频观看| 北条麻妃一区二区三区| 国产精品日韩欧美一区二区| 精品国产乱码一区二区三| 狠狠色伊人亚洲综合成人| 国产精品久久久久久久久免费| 亚洲自拍一区在线观看| 日韩中文欧美在线| 国产精品第一第二| 在线播放精品视频| 黑人巨大精品欧美一区| 亚洲在线www| 性生活三级视频| 成人夜色视频网站在线观看| 精品久久精品久久| 欧美精品少妇| 久久久久久电影| 日韩精品无码一区二区三区| wwwxxx在线观看| 日韩一区在线播放| 欧美视频在线第一页| 17videosex性欧美| 一本色道久久加勒比精品 | 韩国视频一区二区| 亚洲一区二区中文| 免费国产精品视频| 97久久超碰精品国产| 美女黄毛**国产精品啪啪| 黄色国产在线| 亚洲日本韩国一区| 久久久久99精品成人片| 国产18精品乱码免费看| 4438x全国最大成人| 国产三级在线免费观看| 国产日产精品一区| 一区在线电影| 久久电影网站| 色av综合在线| 久久久九九九热| 精品丝袜久久| 日韩视频中文字幕| 免费毛片一区二区三区| 久久亚洲影院| 91青青草免费在线看| 色视频在线观看免费| 国产精品成人免费精品自在线观看| 毛片在线视频观看| 黑人巨大精品| 欧美va天堂va视频va在线| 亚洲 小说 欧美 激情 另类| 久久久久久美女精品| 136fldh精品导航福利| 在线观看不卡的av| caoporm超碰国产精品| 亚洲一区三区在线观看| av漫画网站在线观看| 欧美视频一区二区三区四区| 看全色黄大色黄女片18| 91中文字幕精品永久在线| 久久频这里精品99香蕉| 亚洲性在线观看| 99久久国产综合精品色伊| 韩国黄色一级大片| 成人看片网页| 亚洲精品电影网在线观看| 欧美h片在线观看| 免播放器亚洲| 国产精品亚洲综合| 精品麻豆一区二区三区| 色域天天综合网| 日韩女优在线视频| 亚洲最新色图| 国产日韩欧美夫妻视频在线观看 | 精品中文字幕久久久久久| 性生交大片免费全黄| 日本怡春院一区二区| 狠狠色综合色区| 二区三区在线观看| 欧美日韩精品免费观看视频| 乐播av一区二区三区| 亚洲精选91| 99久久精品无码一区二区毛片 | 国产亚洲一区| 91精品国产99久久久久久| 国产人妻精品一区二区三| 欧美激情综合五月色丁香小说| 国产91xxx| 国偷自产av一区二区三区| 色综合五月天导航| 99热这里只有精品9| 中文字幕亚洲在| 午夜免费看视频| 成人黄色av| 国产成人综合精品在线| 国产精品免费观看| 91久久精品一区二区| 在线观看福利片| 日韩高清不卡一区二区三区| 日本成人黄色免费看| 午夜日韩成人影院| 亚洲网在线观看| 伊人久久中文字幕| 国产精品女主播在线观看| 黄色片在线免费| 日韩中文在线电影| 成人激情视频小说免费下载| 久草资源在线观看| 欧美tickling挠脚心丨vk| 精品少妇一二三区| 97se亚洲国产综合自在线观| 国产淫片免费看| 美日韩中文字幕| 国产日韩欧美一二三区| 国产在线观看a| 精品日韩在线观看| 日韩免费一级片| 久久久一区二区三区捆绑**| 一本久道中文无码字幕av| 日韩av久操| 亚洲自拍小视频| caoprom在线| 国产视频在线观看一区二区| 香蕉污视频在线观看| 国产精品免费观看视频| 佐山爱在线视频| 影音先锋中文字幕一区| 欧美精品欧美精品| 亚洲国产伊人| 久久久精品视频成人| 色婷婷av一区二区三| 一本一本久久a久久精品综合麻豆| 一级二级黄色片| 国产在线不卡一区| 免费看又黄又无码的网站| 女优一区二区三区| 成人精品视频久久久久| 91九色美女在线视频| 国产香蕉97碰碰久久人人| 97人人爽人人爽人人爽| 午夜精品福利一区二区三区av| 在线国产视频一区| 国产传媒一区在线| 免费在线观看毛片网站| 亚洲字幕久久| 美国av一区二区三区 | 国产精品久久久久久久久婷婷 | 日本中文在线观看| 欧美大肚乱孕交hd孕妇| 国产精品免费无遮挡无码永久视频| 综合久久久久久| 蜜臀av一区二区三区有限公司| 麻豆成人91精品二区三区| 欧美 日韩 亚洲 一区| 四虎成人av| 久久精品ww人人做人人爽| 中文字幕成人| 日韩免费在线看| 成人福利电影| 日韩视频免费在线| 六十路在线观看| 精品免费日韩av| 亚洲系列第一页| 色综合色综合色综合| 青青草原在线免费观看视频| 欧美国产日韩一二三区| 免费无码一区二区三区| 顶级嫩模精品视频在线看| 日韩av卡一卡二| 久久婷婷av| 乱妇乱女熟妇熟女网站| 欧美人成网站| 国产成年人在线观看| 少妇精品久久久一区二区| 国产精品一区二区a| 无人区乱码一区二区三区| 国产欧美精品在线| 日韩高清成人| 欧美在线视频免费播放| 超碰97免费在线| 久久艹在线视频| 国产精品va在线观看视色| 在线日韩第一页| 97视频在线观看网站| 亚洲欧美制服中文字幕| 四虎影视在线观看2413| 亚洲精品国产suv| 人人妻人人澡人人爽精品日本| 日韩欧美国产不卡| www.天天干.com| 日韩欧美国产一二三区| jizz国产视频| 精品久久久久一区| 亚洲免费成人在线| 精品电影一区二区三区| 亚洲国产一二三区| 欧美va在线播放| 全部免费毛片在线播放一个| 亚洲精品一区二区三区蜜桃下载| 精品人妻少妇AV无码专区| 欧美岛国在线观看| 欧美 日韩 国产 在线| 精品卡一卡二卡三卡四在线| www久久久久久| 精品动漫一区二区三区在线观看| 亚洲欧美激情国产综合久久久| 日韩欧美123| 欧美熟妇交换久久久久久分类 | 在线观看免费视频综合| 日本免费在线观看视频| 在线精品视频一区二区| 中文字幕人成人乱码亚洲电影| 欧美日韩亚洲综合一区| 国产一区二区三区在线观看| 91麻豆精品国产自产在线观看一区 | 欧美mv和日韩mv的网站| 亚洲欧美激情另类| 亚洲男人天堂2019| 无遮挡的视频在线观看 | 国产高清不卡一区二区| www.四虎精品| 91丨九色丨蝌蚪富婆spa| 在线看片中文字幕| 亚洲美女免费在线| 国产成人在线免费观看视频| 一本色道久久综合狠狠躁的推荐| 一区精品在线观看| 日韩欧美一区二区不卡| 污视频在线免费观看| 亚洲午夜国产成人av电影男同| 欧美精品hd| 国内伊人久久久久久网站视频 | 九色综合日本| 热久久天天拍国产| 国产精品久久久久7777| 丝袜亚洲另类欧美综合| www.污污视频| 99免费精品在线观看| 夜夜春很很躁夜夜躁| 亚洲精选视频在线| 337p粉嫩色噜噜噜大肥臀| 欧美一区二区三区的| 欧美日韩国产中文字幕在线| www.xxxx欧美| 涩涩av在线| 91在线精品视频| 精品一区二区三区在线| 超碰10000| 日产欧产美韩系列久久99| 97精品人人妻人人| 国产精品久久777777| 国产微拍精品一区| 91精品国产美女浴室洗澡无遮挡| 飘雪影视在线观看免费观看 | 日韩欧美a级片| 91精品国产91久久久久久最新毛片| 天天综合网在线观看| 理论片在线不卡免费观看| 成人影院网站| 国产九色精品| 一区二区影院| 在线观看亚洲色图| 94色蜜桃网一区二区三区| 欧美日韩综合一区二区| 欧美视频在线观看一区| 日韩a在线观看| 久久久久久美女| 精品欧美视频| 亚洲午夜精品久久久久久浪潮| 亚洲欧美日韩一区在线观看| 最新国产精品自拍| 综合分类小说区另类春色亚洲小说欧美 | 亚洲va久久久噜噜噜| 成人av动漫在线观看| 久久精品香蕉视频| 99re热这里只有精品视频| 国产一二三四在线| 日韩欧美资源站| www视频在线免费观看| 国产美女久久久| 久久婷婷蜜乳一本欲蜜臀| 三年中国国语在线播放免费| 久久色视频免费观看| www成人在线| 亚洲国语精品自产拍在线观看| 欧美1234区| 粉嫩av免费一区二区三区| 午夜亚洲福利| 中文字幕一二三区| 亚洲精品综合在线| 亚洲国产精品久久久久久久| 欧美成人免费播放| 奇米一区二区| 国产精品无码免费专区午夜| 粉嫩aⅴ一区二区三区四区| 黄页网站免费观看| 精品国产乱码久久| 国产美女福利在线观看| 国产精品有限公司| 在线一区视频| 最近中文字幕免费| 在线看一区二区| 2021av在线| 91在线直播亚洲| 国产精品扒开腿做爽爽爽软件| 无码国产精品久久一区免费| 亚洲最新视频在线观看| 人人妻人人澡人人爽久久av| 4438全国亚洲精品在线观看视频| 中文字幕伦av一区二区邻居| 国语对白做受xxxxx在线中国| 国产欧美精品一区aⅴ影院 | 国产一区二区三区免费播放| 亚洲av鲁丝一区二区三区| 日韩精品一区二区三区swag| 久久影院午夜精品| 欧美国产一区二区在线| 日本美女一区二区| 欧美成人片在线观看| 日韩成人中文电影| 国产91精品在线| 天堂8在线天堂资源bt| 91蜜桃免费观看视频| 在线视频精品免费| 欧美成人激情在线| 欧美黑人做爰爽爽爽| 欧美精品性生活| 亚洲一区二区高清| 国产乱子伦三级在线播放| 成人免费福利在线| 一区二区黄色| 激情五月激情综合| 亚洲电影av在线| 日韩毛片网站| 97成人在线免费视频| 中文字幕亚洲精品在线观看 | 国产aa精品| 亚洲 高清 成人 动漫| 成人欧美一区二区三区黑人麻豆 | 日本精品久久久久久久久久| 久久久91精品国产一区二区精品 | 国产成人免费视频| 久草视频一区二区| 欧美日本中文字幕| 国产探花在线精品一区二区| gogo亚洲国模私拍人体| 欧美性猛交xxx| 欧美性受ⅹ╳╳╳黑人a性爽| 日本欧美精品久久久| 国产99久久久国产精品| 一区二区自拍偷拍| 日本精品中文字幕| 激情欧美一区二区三区|