日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

算法的时间和空间复杂度

發(fā)布時(shí)間:2025/3/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法的时间和空间复杂度 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

算法定義

? ?算法由控制結(jié)構(gòu)(順序、分支和循環(huán)3種)和原操作(指固有數(shù)據(jù)類型的操作)構(gòu)成的,則算法時(shí)間取決于兩者的綜合效果。為了便于比較同一個(gè)問(wèn)題的不同算法,通常的做法是,從算法中選取一種對(duì)于所研究的問(wèn)題(或算法類型)來(lái)說(shuō)是基本操作的原操作,以該基本操作的重復(fù)執(zhí)行的次數(shù)作為算法的時(shí)間量度。不同的算法可能用不同的時(shí)間、空間或效率來(lái)完成同樣的任務(wù),一個(gè)算法的優(yōu)劣可以用空間復(fù)雜度與時(shí)間復(fù)雜度來(lái)衡量.

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

1、時(shí)間頻度:一個(gè)算法執(zhí)行所耗費(fèi)的時(shí)間,在理論上是不能算出來(lái)的,必須上機(jī)運(yùn)行測(cè)試才能知道。但我們不可能也沒(méi)有必要對(duì)每個(gè)算法都上機(jī)測(cè)試,只需知道哪個(gè)算法花費(fèi)的時(shí)間多,哪個(gè)算法花費(fèi)的時(shí)間少就可以了。并且一個(gè)算法花費(fèi)的時(shí)間與算法中語(yǔ)句的執(zhí)行次數(shù)成正比例,哪個(gè)算法中語(yǔ)句執(zhí)行次數(shù)多,它花費(fèi)時(shí)間就多。一個(gè)算法中的語(yǔ)句執(zhí)行次數(shù)稱為語(yǔ)句頻度或時(shí)間頻度。記為T(n)。

2、時(shí)間復(fù)雜度:在時(shí)間頻度中,n稱為問(wèn)題的規(guī)模,當(dāng)n不斷變化時(shí),時(shí)間頻度T(n)也會(huì)不斷變化。但有時(shí)我們想知道它變化時(shí)呈現(xiàn)什么規(guī)律。為此,我們引入時(shí)間復(fù)雜度概念。 一般情況下,算法中基本操作重復(fù)執(zhí)行的次數(shù)是問(wèn)題規(guī)模n的某個(gè)函數(shù),用T(n)表示,若有某個(gè)輔助函數(shù)f(n),使得當(dāng)n趨近于無(wú)窮大時(shí),T(n)/f(n)的極限值為不等于零的常數(shù),則稱f(n)是T(n)的同數(shù)量級(jí)函數(shù)。記作T(n)=O(f(n)),O(f(n))?為算法的漸進(jìn)時(shí)間復(fù)雜度,簡(jiǎn)稱時(shí)間復(fù)雜度。此外,T (n) = Ο(f (n))?表示存在一個(gè)常數(shù)C,使得在當(dāng)n趨于正無(wú)窮時(shí)總有?T (n) ≤ C * f(n)。簡(jiǎn)單來(lái)說(shuō),就是T(n)在n趨于正無(wú)窮時(shí)最大也就跟f(n)差不多大。也就是說(shuō)當(dāng)n趨于正無(wú)窮時(shí)T (n)的上界是C * f(n)。其雖然對(duì)f(n)沒(méi)有規(guī)定,但是一般都是取盡可能簡(jiǎn)單的函數(shù)。例如,O(2n2+n +1) = O (3n2+n+3) = O (7n2?+ n) =?O (?n2?)?,一般都只用O(n2)表示就可以了。注意到大O符號(hào)里隱藏著一個(gè)常數(shù)C,所以f(n)里一般不加系數(shù)。如果把T(n)當(dāng)做一棵樹(shù),那么O(f(n))所表達(dá)的就是樹(shù)干,只關(guān)心其中的主干,其他的細(xì)枝末節(jié)全都拋棄不管。

常見(jiàn)的數(shù)量級(jí)大小:O(1)<O(logn)<O(n)<O(nlogn)<O(n2n2)<O(n3n3)<O(2n2n)<O(n!)

數(shù)量級(jí)能承受的大致規(guī)模常見(jiàn)算法
O(1)任意直接輸出結(jié)果
O(logn)任意二分查找、快速冪
O(n)以百萬(wàn)計(jì)(五六百萬(wàn))貪心算法、掃描和遍歷
O(nlogn)以十萬(wàn)計(jì)(三四十萬(wàn))帶有分治思想的算法,如二分法
O(n2)以千計(jì)數(shù)(兩千)枚舉、動(dòng)態(tài)規(guī)劃
O(n3)不到兩百動(dòng)態(tài)規(guī)劃
O(2n)24搜索
O(n!)10產(chǎn)生全排列
O(nn)8暴力法破解密碼

O(1)叫常數(shù)時(shí)間;O(n)、O(n2)、O(n3)、O(n4)……叫做多項(xiàng)式時(shí)間;O(2n)、O(3n)……叫做指數(shù)時(shí)間。

3、算法的時(shí)間復(fù)雜度的具體步驟:

  ⑴ 找出算法中的基本語(yǔ)句;

  算法中執(zhí)行次數(shù)最多的那條語(yǔ)句就是基本語(yǔ)句,通常是最內(nèi)層循環(huán)的循環(huán)體。

  ⑵ 計(jì)算基本語(yǔ)句的執(zhí)行次數(shù)的數(shù)量級(jí);

  只需計(jì)算基本語(yǔ)句執(zhí)行次數(shù)的數(shù)量級(jí),這就意味著只要保證基本語(yǔ)句執(zhí)行次數(shù)的函數(shù)中的最高次冪正確即可,可以忽略所有低次冪和最高次冪的系數(shù)。這樣能夠簡(jiǎn)化算法分析,并且使注意力集中在最重要的一點(diǎn)上:增長(zhǎng)率。

  ⑶ 用大Ο記號(hào)表示算法的時(shí)間性能。

  將基本語(yǔ)句執(zhí)行次數(shù)的數(shù)量級(jí)放入大Ο記號(hào)中。

  如果算法中包含嵌套的循環(huán),則基本語(yǔ)句通常是最內(nèi)層的循環(huán)體,如果算法中包含并列的循環(huán),則將并列循環(huán)的時(shí)間復(fù)雜度相加。舉個(gè)例子:第一個(gè)for循環(huán)的時(shí)間復(fù)雜度為Ο(n),第二個(gè)for循環(huán)的時(shí)間復(fù)雜度為Ο(n2),則整個(gè)算法的時(shí)間復(fù)雜度為Ο(n+n2)=Ο(n2)。

let x =1; let y = 1; for (let i=1; i<=n; i++) {x++; } for (let j=1; j<=m; i++){for (let k=1; k<=m; j++) {y++; } }

4、常見(jiàn)的時(shí)間復(fù)雜度進(jìn)行示例

(1)O(1)

  let x=1;

? (2) O(n)

sum=0; (1次) for(i=1;i<=n;i++) { (n+1次) sum++; (n+1次) }

  

  Θ(2n+2)=n? (Θ即:去低階項(xiàng),去掉常數(shù)項(xiàng),去掉高階項(xiàng)的常參得到),所以

?

?

let sum=0; (1次) for(let i=1;i<=n;i++) (n+1次) for(let j=1;j<=n;j++) ((n+1)(n+1)次) sum++; ((n+1)(n+1)次)

  

  Θ(2n2+5n+3)=n2?T(n)=O(n2);

? ? 一般情況下,對(duì)步進(jìn)循環(huán)語(yǔ)句只需考慮循環(huán)體中語(yǔ)句的執(zhí)行次數(shù),忽略該語(yǔ)句中步長(zhǎng)加1、終值判別、控制轉(zhuǎn)移等成分,當(dāng)有若干個(gè)循環(huán)語(yǔ)句時(shí),算法的時(shí)間復(fù)雜度是由嵌套層數(shù)最多的循環(huán)語(yǔ)句中最內(nèi)層語(yǔ)句的頻度f(wàn)(n)決定的。

? (4)O(log2n)??

  

i = 1; while(i<=n){i = i*2; }

  

  

   i = 2, 4, 8,?16 ,32,64,128? => i = 2x,?假設(shè)x次(時(shí)間頻度)后跳出循環(huán),因?yàn)?i<=n ,所以2x <= n => x = log2n

? ? 所以 T(n) = O(?log2n)

while(n){n = n/2; }

  

  128,64,32,16,8,4,2,...

? ?=> 2x? = n => x =?log2n

? ?(5)O(n3)?

   

for(i=0;i<n;i++) { for(j=0;j<i;j++) { for(k=0;k<j;k++) x=x+2; } }

  O(n3)

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/xiaosongJiang/p/10003399.html

總結(jié)

以上是生活随笔為你收集整理的算法的时间和空间复杂度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 四虎一国产精品一区二区影院 | 密桃成熟时在线观看 | 精品久久久久久久久久久aⅴ | 337p粉嫩大胆噜噜噜亚瑟影院 | 精品少妇v888av | 欧美成人一区二区视频 | 欧美成人三级伦在线观看 | 密桃成熟时在线观看 | 激情综合文学 | 一区二区三区精品久久久 | 亚洲国语| 欧美精品手机在线 | 中文字幕av久久爽一区 | 密臀av| 琪琪伦伦影院理论片 | 女性女同性aⅴ免费观女性恋 | 99精品视频一区二区 | 亚洲精品日产精品乱码不卡 | 春色av| 亚洲免费在线观看视频 | 久久精品国产免费看久久精品 | www,超碰| www.在线观看麻豆 | 性色一区二区三区 | 黄色av高清 | 精品亚洲永久免费精品 | 国产成人tv | 免费观看视频在线观看 | 波多野结衣久久久久 | 老鸭窝av在线 | 黑人一级视频 | 亚洲插插| 亚洲无人禁区 | 欧美日韩在线直播 | www.狠狠干| 国产永久精品 | 国产精品色哟哟 | 久久久久国产精品一区二区 | 日韩不卡| 性色福利 | 国产日韩欧美在线 | 女人被狂躁60分钟视频 | www.黄色一片 | 91在线视频免费 | 欧美日韩精品在线观看 | 无码国产精品一区二区色情男同 | 一品毛片| 女同动漫免费观看高清完整版在线观看 | 国产人妖在线视频 | 午夜快播| 日韩毛片在线观看 | 天天干天天爱天天操 | 操小妞| 亚洲综合图片区 | 精品人伦一区二区三电影 | 九九精品免费 | 热99精品 | 天天看视频 | 国产女人水真多18毛片18精品 | 国产午夜精品一区二区三区嫩草 | 精品成人无码久久久久久 | 国内自拍偷拍视频 | 日韩1页 | 一区二区三区中文视频 | 激情综合网站 | 久久精品一区二区三 | 性感美女视频一二三 | 一区二区日韩欧美 | 性视频黄色 | 日韩一区二区av | 91精品在线视频观看 | 青青视频在线免费观看 | 中文字幕亚洲在线 | 天堂视频网 | 熟妇高潮喷沈阳45熟妇高潮喷 | 日韩欧美在线不卡 | 国产在线综合视频 | 1024国产精品 | 青春草免费视频 | 亚洲中文字幕无码专区 | 亚洲精品高清在线观看 | 激情综合网五月激情 | 啪视频在线观看 | 精品久久一区 | 国内少妇精品 | 日本欧美一区二区 | 91av视频网 | xxxxⅹxxxhd日本8hd | 狠狠干伊人 | 亚日韩 | 精品伦精品一区二区三区视频 | 国产亚洲av综合人人澡精品 | 日韩一区2区 | 爱爱的免费视频 | av大全在线观看 | 91av免费 | 亚洲av永久无码精品一百度影院 | 99久久精品国产成人一区二区 | 欧美成人不卡视频 |