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

O(n)的算法居然超時了,此時的n究竟是多大?

開發(fā) 前端 算法
本文詳細(xì)分析了在leetcode上做題程序為什么會有超時,以及從硬件配置上大體知道CPU的執(zhí)行速度,然后親自做一個實驗來看看O(n)的算法,跑一秒鐘,這個n究竟是做大,最后給出不同時間復(fù)雜度,一秒內(nèi)可以運(yùn)算出來的n的大小。

[[412223]]

一些同學(xué)可能對計算機(jī)運(yùn)行的速度還沒有概念,就是感覺計算機(jī)運(yùn)行速度應(yīng)該會很快,那么在leetcode上做算法題目的時候為什么會超時呢?

計算機(jī)究竟1s可以執(zhí)行多少次操作呢?接下來探討一下這個問題。

超時是怎么回事

大家在leetcode上練習(xí)算法的時候應(yīng)該都遇到過一種錯誤是“超時”。

也就是說程序運(yùn)行的時間超過了規(guī)定的時間,一般OJ(online judge)的超時時間就是1s,也就是用例數(shù)據(jù)輸入后最多要1s內(nèi)得到結(jié)果,暫時還不清楚leetcode的判題規(guī)則,下文為了方便講解,暫定超時時間就是1s。

如果寫出了一個O(n)的算法 ,其實可以估算出來n是多大的時候算法的執(zhí)行時間就會超過1s了。

如果n的規(guī)模已經(jīng)足夠讓O(n)的算法運(yùn)行時間超過了1s,就應(yīng)該考慮log(n)的解法了。

從硬件配置看計算機(jī)的性能

計算機(jī)的運(yùn)算速度主要看CPU的配置,以2015年MacPro為例,CPU配置:2.7 GHz Dual-Core Intel Core i5 。

也就是 2.7 GHz 奔騰雙核,i5處理器,GHz是指什么呢,1Hz = 1/s,1Hz 是CPU的一次脈沖(可以理解為一次改變狀態(tài),也叫時鐘周期),稱之為為赫茲,那么1GHz等于多少赫茲呢

  • 1GHz(兆赫)= 1000MHz(兆赫)
  • 1MHz(兆赫)= 1百萬赫茲

所以 1GHz = 10億Hz,表示CPU可以一秒脈沖10億次(有10億個時鐘周期),這里不要簡單理解一個時鐘周期就是一次CPU運(yùn)算。

例如1 + 2 = 3,CPU要執(zhí)行四次才能完整這個操作,步驟一:把1放入寄存機(jī),步驟二:把2放入寄存器,步驟三:做加法,步驟四:保存3。

而且計算機(jī)的CPU也不會只運(yùn)行我們自己寫的程序上,同時CPU也要執(zhí)行計算機(jī)的各種進(jìn)程任務(wù)等等,我們的程序僅僅是其中的一個進(jìn)程而已。

所以我們的程序在計算機(jī)上究竟1s真正能執(zhí)行多少次操作呢?

做個測試實驗

在寫測試程序測1s內(nèi)處理多大數(shù)量級數(shù)據(jù)的時候,有三點需要注意:

  • CPU執(zhí)行每條指令所需的時間實際上并不相同,例如CPU執(zhí)行加法和乘法操作的耗時實際上都是不一樣的。
  • 現(xiàn)在大多計算機(jī)系統(tǒng)的內(nèi)存管理都有緩存技術(shù),所以頻繁訪問相同地址的數(shù)據(jù)和訪問不相鄰元素所需的時間也是不同的。
  • 計算機(jī)同時運(yùn)行多個程序,每個程序里還有不同的進(jìn)程線程在搶占資源。

盡管有很多因素影響,但是還是可以對自己程序的運(yùn)行時間有一個大體的評估的。

引用算法4里面的一段話:

  • 火箭科學(xué)家需要大致知道一枚試射火箭的著陸點是在大海里還是在城市中;
  • 醫(yī)學(xué)研究者需要知道一次藥物測試是會殺死還是會治愈實驗對象;

所以任何開發(fā)計算機(jī)程序員的軟件工程師都應(yīng)該能夠估計這個程序的運(yùn)行時間是一秒鐘還是一年。

這個是最基本的,所以以上誤差就不算事了。

以下以C++代碼為例:

測試硬件:2015年MacPro,CPU配置:2.7 GHz Dual-Core Intel Core i5

實現(xiàn)三個函數(shù),時間復(fù)雜度分別是 O(n) , O(n^2), O(nlogn),使用加法運(yùn)算來統(tǒng)一測試。

  1. // O(n) 
  2. void function1(long long n) { 
  3.     long long k = 0; 
  4.     for (long long i = 0; i < n; i++) { 
  5.         k++; 
  6.     } 
  1. // O(n^2) 
  2. void function2(long long n) { 
  3.     long long k = 0; 
  4.     for (long long i = 0; i < n; i++) { 
  5.         for (long j = 0; j < n; j++) { 
  6.             k++; 
  7.         } 
  8.     } 
  9.  
  1. // O(nlogn) 
  2. void function3(long long n) { 
  3.     long long k = 0; 
  4.     for (long long i = 0; i < n; i++) { 
  5.         for (long long j = 1; j < n; j = j*2) { // 注意這里j=1 
  6.             k++; 
  7.         } 
  8.     } 

來看一下這三個函數(shù)隨著n的規(guī)模變化,耗時會產(chǎn)生多大的變化,先測function1 ,就把 function2 和 function3 注釋掉

  1. int main() { 
  2.     long long n; // 數(shù)據(jù)規(guī)模 
  3.     while (1) { 
  4.         cout << "輸入n:"
  5.         cin >> n; 
  6.         milliseconds start_time = duration_cast<milliseconds >( 
  7.             system_clock::now().time_since_epoch() 
  8.         ); 
  9.         function1(n); 
  10. //        function2(n); 
  11. //        function3(n); 
  12.         milliseconds end_time = duration_cast<milliseconds >( 
  13.             system_clock::now().time_since_epoch() 
  14.         ); 
  15.         cout << "耗時:" << milliseconds(end_time).count() - milliseconds(start_time).count() 
  16.             <<" ms"<< endl; 
  17.     } 

來看一下運(yùn)行的效果,如下圖:

O(n)的算法,1s內(nèi)大概計算機(jī)可以運(yùn)行 5 * (10^8)次計算,可以推測一下O(n^2) 的算法應(yīng)該1s可以處理的數(shù)量級的規(guī)模是 5 * (10^8)開根號,實驗數(shù)據(jù)如下。 


O(n^2)的算法,1s內(nèi)大概計算機(jī)可以運(yùn)行 22500次計算,驗證了剛剛的推測。

在推測一下O(nlogn)的話, 1s可以處理的數(shù)據(jù)規(guī)模是什么呢?

理論上應(yīng)該是比 O(n)少一個數(shù)量級,因為logn的復(fù)雜度 其實是很快,看一下實驗數(shù)據(jù)。

O(nlogn)的算法,1s內(nèi)大概計算機(jī)可以運(yùn)行 2 * (10^7)次計算,符合預(yù)期。

這是在我個人PC上測出來的數(shù)據(jù),不能說是十分精確,但數(shù)量級是差不多的,大家也可以在自己的計算機(jī)上測一下。

整體測試數(shù)據(jù)整理如下:

至于O(logn) 和O(n^3) 等等這些時間復(fù)雜度在1s內(nèi)可以處理的多大的數(shù)據(jù)規(guī)模,大家可以自己寫一寫代碼去測一下了。

完整測試代碼

  1. #include <iostream> 
  2. #include <chrono> 
  3. #include <thread> 
  4. using namespace std; 
  5. using namespace chrono; 
  6. // O(n) 
  7. void function1(long long n) { 
  8.     long long k = 0; 
  9.     for (long long i = 0; i < n; i++) { 
  10.         k++; 
  11.     } 
  12.  
  13. // O(n^2) 
  14. void function2(long long n) { 
  15.     long long k = 0; 
  16.     for (long long i = 0; i < n; i++) { 
  17.         for (long j = 0; j < n; j++) { 
  18.             k++; 
  19.         } 
  20.     } 
  21.  
  22. // O(nlogn) 
  23. void function3(long long n) { 
  24.     long long k = 0; 
  25.     for (long long i = 0; i < n; i++) { 
  26.         for (long long j = 1; j < n; j = j*2) { // 注意這里j=1 
  27.             k++; 
  28.         } 
  29.     } 
  30. int main() { 
  31.     long long n; // 數(shù)據(jù)規(guī)模 
  32.     while (1) { 
  33.         cout << "輸入n:"
  34.         cin >> n; 
  35.         milliseconds start_time = duration_cast<milliseconds >( 
  36.             system_clock::now().time_since_epoch() 
  37.         ); 
  38.         function1(n); 
  39. //        function2(n); 
  40. //        function3(n); 
  41.         milliseconds end_time = duration_cast<milliseconds >( 
  42.             system_clock::now().time_since_epoch() 
  43.         ); 
  44.         cout << "耗時:" << milliseconds(end_time).count() - milliseconds(start_time).count() 
  45.             <<" ms"<< endl; 
  46.     } 

總結(jié)

本文詳細(xì)分析了在leetcode上做題程序為什么會有超時,以及從硬件配置上大體知道CPU的執(zhí)行速度,然后親自做一個實驗來看看O(n)的算法,跑一秒鐘,這個n究竟是做大,最后給出不同時間復(fù)雜度,一秒內(nèi)可以運(yùn)算出來的n的大小。

建議錄友們也都自己做一做實驗,測一測,看看是不是和我的測出來的結(jié)果差不多。

這樣,大家應(yīng)該對程序超時時候的數(shù)據(jù)規(guī)模有一個整體的認(rèn)識了。

 

責(zé)任編輯:姜華 來源: 代碼隨想錄
相關(guān)推薦

2019-04-26 13:55:02

Istio微服務(wù)架構(gòu)

2019-06-04 14:15:08

JavaScript V8前端

2019-07-22 15:29:53

JavaScriptGitHub語言

2011-02-28 09:51:43

內(nèi)省

2011-02-16 16:13:40

Debian

2021-03-08 21:44:33

以太坊區(qū)塊鏈比特幣

2015-08-26 09:54:19

物聯(lián)網(wǎng)

2011-08-04 13:24:28

IT運(yùn)維

2012-05-28 22:49:50

PureView

2022-06-13 09:51:35

UWB超寬帶無線載波通信技術(shù)

2021-02-19 20:38:01

互聯(lián)網(wǎng)衛(wèi)星系統(tǒng)

2020-06-11 09:18:34

動靜分離架構(gòu)架構(gòu)設(shè)計開發(fā)

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2010-08-24 09:19:59

2025-06-25 14:18:36

LAMLAMsGUI

2020-07-08 08:09:08

邊緣計算邊緣云云平臺

2021-08-24 10:57:24

Linux文件系統(tǒng)內(nèi)存

2021-08-09 05:19:08

Provider 前端前端代碼

2022-06-09 10:10:24

前端組件化解耦

2022-02-22 08:48:49

AgentClient主機(jī)
點贊
收藏

51CTO技術(shù)棧公眾號

日韩av在线网| 黑人精品xxx一区一二区| 亚洲一区二区三区在线视频| 一区视频免费观看| jizz国产精品| 色综合久久综合| 日本丰满少妇黄大片在线观看| 人妻精品一区二区三区| 日韩国产成人精品| 欧美极品xxxx| 公肉吊粗大爽色翁浪妇视频| 久久9999免费视频| 色香蕉久久蜜桃| 国产人妻人伦精品| 搞黄视频免费在线观看| 粉嫩av一区二区三区粉嫩| 国产激情视频一区| 久久久国产精品人人片| sdde在线播放一区二区| 亚洲成人精品视频在线观看| xxxx一级片| 超碰激情在线| 亚洲激情自拍视频| 亚洲乱码一区二区三区| 色婷婷激情五月| 精品一区二区三区香蕉蜜桃| 日本欧美中文字幕| 国产污视频在线观看| 久久久久久久久久久久久久久久久久 | 国语对白在线刺激| 中文字幕亚洲综合久久菠萝蜜| 蜜桃成人免费视频| 欧美自拍偷拍第一页| 国产乱码精品一品二品| 国产精品美女av| 黄色一级视频免费看| 一区二区高清| 91精品国产99| 日韩三级免费看| 亚洲三级影院| 国模私拍视频一区| 精品无码久久久久久久久| 亚洲无中文字幕| www.亚洲成人| 91社区视频在线观看| 视频一区中文| 亚洲欧洲xxxx| 一区二区三区四区免费| 国产精品日韩精品中文字幕| 日韩成人中文电影| 国产麻豆天美果冻无码视频| 欧美一级二级三级视频| 亚洲精品久久久久| 亚洲观看黄色网| 牛牛影视久久网| 日韩成人xxxx| 一区二区三区四区免费| 成人av资源电影网站| 在线观看成人黄色| 亚洲欧洲综合网| 一区二区不卡| 欧美激情国产精品| 日韩伦人妻无码| 一本色道88久久加勒比精品| 欧美中在线观看| 一级黄色av片| 精彩视频一区二区三区| 亚洲影院高清在线| 欧美一区二区三区成人片在线| 国产iv一区二区三区| 成人一区二区电影| 成人av一区二区三区在线观看| 国产不卡免费视频| 精品婷婷色一区二区三区蜜桃| 完全免费av在线播放| 国产精品久久午夜| 亚洲精品国产手机| 亚洲性图久久| 555www成人网| 小泽玛利亚一区二区三区视频| 日本三级亚洲精品| 91久热免费在线视频| 亚洲精品喷潮一区二区三区| 成人aa视频在线观看| 欧美系列一区| 国产人成网在线播放va免费| 亚洲大片在线观看| 九热视频在线观看| **爰片久久毛片| 亚洲欧美在线免费观看| 99鲁鲁精品一区二区三区| 国产精品二区影院| 国产精品国产三级国产aⅴ9色| 国产免费一区二区三区最新不卡| 国产999精品久久久久久 | 久久动漫网址| 中文字幕综合在线| 日本污视频在线观看| 日韩电影在线观看一区| 国产高清在线精品一区二区三区| 色播色播色播色播色播在线 | 日韩电影免费观看高清完整版| 精品视频1区2区| 亚洲av成人片无码| 999视频精品| 5566日本婷婷色中文字幕97| 99国产揄拍国产精品| 久久精子c满五个校花| 超碰97在线看| julia一区二区三区中文字幕| 精品嫩草影院久久| 女人18毛片毛片毛片毛片区二| 国产欧美欧美| 成人动漫在线观看视频| 自拍视频在线网| 婷婷久久综合九色国产成人| 日本黄色www| 日韩欧美精品一区| 91成人在线视频| 性中国xxx极品hd| 国产精品伦一区二区三级视频| 成人在线免费在线观看| 视频精品一区| 免费不卡欧美自拍视频| 中国精品一区二区| 久久毛片高清国产| 人妻熟妇乱又伦精品视频| 蜜桃在线一区| 久久久精品亚洲| 一级爱爱免费视频| 欧美国产1区2区| 亚洲精品一二三四五区| 婷婷综合福利| 久久久久久国产精品| jlzzjlzz亚洲女人18| 亚洲色图一区二区| 91精品999| 99精品网站| 国产美女直播视频一区| 9色在线观看| 欧美日韩精品电影| 免费看裸体网站| 日本视频一区二区三区| 亚洲v日韩v欧美v综合| 丝袜美腿诱惑一区二区三区| 亚洲精品在线观看www| 国产黄色免费观看| 国产午夜精品在线观看| 日韩免费高清在线| 欧美一二区在线观看| 国产精品丝袜一区二区三区| 97电影在线观看| 欧美日韩大陆一区二区| 成人涩涩小片视频日本| 国产精品一区二区久久不卡| 日韩专区第三页| 99香蕉久久| 欧美亚洲激情在线| 蜜芽tv福利在线视频| 91福利在线播放| 视频国产一区二区| 粉嫩绯色av一区二区在线观看| 国产亚洲黄色片| 综合色就爱涩涩涩综合婷婷| 国产精品9999| 快射av在线播放一区| 精品免费国产二区三区| 日韩欧美a级片| 国产午夜精品在线观看| 天堂av8在线| 激情视频一区| 欧美日韩国产不卡在线看| 日韩中文在线播放| 欧美成人免费观看| 手机看片一区二区三区| 91国产免费看| 欧美做爰爽爽爽爽爽爽| 成人精品免费视频| 亚洲熟妇av一区二区三区| 日韩在线观看| 99高清视频有精品视频| 92国产精品| 久久精品国产成人| 神马午夜一区二区| 欧美视频精品在线观看| 久草网站在线观看| 2021中文字幕一区亚洲| 蜜桃福利午夜精品一区| 亚洲毛片在线| 在线视频91| 嫩草国产精品入口| 成人免费在线视频网站| 午夜不卡影院| 久久国产精品影视| 欧美xxx.com| 日韩欧美在线网站| 亚洲精品国产精品国自产网站按摩| 亚洲四区在线观看| 国产精品无码久久久久久| 国产一区二区三区免费播放| 亚洲熟妇无码另类久久久| 久久影视一区| 久久久久久99| 亚洲天堂中文字幕在线观看| 国产精品电影在线观看| 黑人极品ⅴideos精品欧美棵| 国产亚洲欧洲在线| 欧美一级特黄aaaaaa大片在线观看| 欧美日韩在线亚洲一区蜜芽| 日本中文字幕网| 亚洲男帅同性gay1069| 性欧美一区二区| 99精品在线观看视频| 中文字幕在线视频一区二区| 日本不卡视频在线观看| 欧美在线观看成人| 亚洲小说欧美另类婷婷| 亚洲欧美日韩不卡| 日韩理论电影院| 欧美精品免费观看二区| 激情小说一区| 成人夜色视频网站在线观看| 隔壁人妻偷人bd中字| 久久一区91| 日韩三级电影网站| 奇米一区二区| 91免费欧美精品| 中文.日本.精品| 77777少妇光屁股久久一区| 超碰电影在线播放| 日韩有码片在线观看| 黄色网址在线播放| 亚洲精品自拍视频| 亚欧在线观看视频| 精品国产91亚洲一区二区三区婷婷| 91肉色超薄丝袜脚交一区二区| 欧美三级中文字| 亚洲无码精品在线播放| 欧美丝袜自拍制服另类| 中文字幕乱码视频| 欧美午夜一区二区三区| 在线观看日本网站| 在线视频一区二区三区| 一级片在线观看免费| 色婷婷久久久综合中文字幕| 久久精品视频1| 色偷偷久久人人79超碰人人澡| 亚洲日本视频在线观看| 精品国产乱码久久久久久天美| 久久久久久久久久综合| 亚洲国产视频直播| 日韩精品一区二区av| 黑人精品xxx一区一二区| 啦啦啦免费高清视频在线观看| 欧美性感美女h网站在线观看免费| 日韩三级免费看| 日本乱人伦aⅴ精品| 在线观看你懂的网站| 欧美男女性生活在线直播观看| 国产精品无码天天爽视频| 欧美一区二区三区视频| 亚洲精品喷潮一区二区三区| 日韩电影网在线| 黄网在线观看| 久久视频在线看| 欧美日韩在线视频免费观看| 性欧美长视频免费观看不卡| 依依综合在线| 国产在线视频欧美| 国产精品一区二区三区av| 国产成人免费观看| 四虎5151久久欧美毛片| 日韩欧美三级电影| 亚洲精品久久久| 免费无码不卡视频在线观看| 免费在线观看成人av| 香港日本韩国三级网站| 国产一区二区三区在线观看精品| 岛国精品一区二区三区| 久久综合视频网| www.97视频| 欧美日韩久久久久| 亚洲视频中文字幕在线观看| 日韩女优电影在线观看| 欧美日韩国产综合视频| xvideos亚洲人网站| 99re6在线精品视频免费播放| 国产精品成人播放| 中文字幕日韩在线| 日韩高清国产精品| 韩国欧美一区| 97公开免费视频| 成人美女在线视频| 亚洲毛片亚洲毛片亚洲毛片| 亚洲国产视频在线| 中文字幕在线网址| 亚洲国产私拍精品国模在线观看| 91社区在线高清| 91av在线免费观看| 欧美第一在线视频| 日韩av高清在线播放| 伊人影院久久| 国产精品区在线| 2021国产精品久久精品| 麻豆国产尤物av尤物在线观看| 色丁香久综合在线久综合在线观看| 国产精品久久综合青草亚洲AV| 日韩成人网免费视频| 91中文在线| 国产精品色午夜在线观看| 国产精品调教| 91视频成人免费| 男男视频亚洲欧美| 97超碰在线资源| 亚洲二区在线观看| 国产黄a三级三级三级| 中文欧美在线视频| 亚洲精华液一区二区三区| aaa级精品久久久国产片| 日韩精品免费一区二区三区| 日韩av资源在线| av动漫一区二区| 欧美极品视频在线观看| 欧美日韩激情在线| 69av在线| 国产成人综合精品| 亚欧洲精品视频在线观看| 国产av熟女一区二区三区| 美日韩一级片在线观看| 久久久久9999| 欧美日韩国产中文字幕| 亚洲精品网站在线| 欧美激情啊啊啊| 深夜福利一区| 蜜臀精品一区二区| 国产成人自拍在线| 欧美色图亚洲天堂| 欧美大片在线观看一区二区| huan性巨大欧美| 亚洲资源在线看| 你懂的网址国产 欧美| 国产传媒免费观看| 亚洲少妇最新在线视频| 99国产精品99| 欧美疯狂xxxx大交乱88av| 中文在线综合| 欧美精品久久久久久久免费| www.色精品| 欧美亚洲精品天堂| 亚洲欧洲国产精品| 91天天综合| 一区二区精品视频| 国产精品一级在线| 久久黄色免费视频| 亚洲国产精品久久91精品| 97超碰免费在线| 蜜桃免费一区二区三区| 天使萌一区二区三区免费观看| 中文字幕第4页| 欧美日精品一区视频| 成人影院在线看| 国产精品一区视频网站| 亚洲精品国产日韩| 国产精成人品免费观看| 欧美日韩中字一区| 在线看一级片| 好吊色欧美一区二区三区四区 | 国产成人麻豆精品午夜在线| 欧美成人全部免费| 久久男人av| 色悠悠久久综合网| 亚洲人成网站影音先锋播放| 成人午夜免费福利| 欧美在线视频观看免费网站| 欧美综合视频| 国产乱国产乱老熟300部视频| 午夜精品久久久久久久久久久 | 2021国产精品视频| 欧美影院三区| 人妻互换一二三区激情视频| 精品日本高清在线播放| 亚洲视频tv| 国产精品永久入口久久久| 性欧美videos另类喷潮| 午夜国产小视频| 亚洲电影在线看| 久久女人天堂| 国产九九九九九| 国产精品成人在线观看| 六月丁香色婷婷| 国产精品一区av| 一区二区动漫| 国产盗摄一区二区三区在线| 精品视频—区二区三区免费| 婷婷精品久久久久久久久久不卡| 国产成人永久免费视频| 中文字幕精品在线不卡| 日本毛片在线观看| 亚洲v日韩v综合v精品v| 天堂蜜桃91精品|