最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?精煉解讀時(shí)間復(fù)雜度與空間復(fù)雜度

 更新時(shí)間:2022年03月14日 16:43:26   作者:K媾?  
對(duì)于一個(gè)算法,其時(shí)間復(fù)雜度和空間復(fù)雜度往往是相互影響的,當(dāng)追求一個(gè)較好的時(shí)間復(fù)雜度時(shí),可能會(huì)使空間復(fù)雜度的性能變差,即可能導(dǎo)致占用較多的存儲(chǔ)空間,這篇文章主要給大家介紹了關(guān)于Java時(shí)間復(fù)雜度、空間復(fù)雜度的相關(guān)資料,需要的朋友可以參考下

前言:

所謂的復(fù)雜度就是衡量算法的效率,衡量算發(fā)效率又分為兩種,一種叫做時(shí)間復(fù)雜度,一種叫做空間復(fù)雜度。

一、算法效率

算法效率分析分為兩種:第一種是時(shí)間效率,第二種是空間效率。時(shí)間效率被稱為時(shí)間復(fù)雜度,而空間效率被 稱作空間復(fù)雜度。 時(shí)間復(fù)雜度主要衡量的是一個(gè)算法的運(yùn)行速度,而空間復(fù)雜度主要衡量一個(gè)算法所需要的額 外空間,在計(jì)算機(jī)發(fā)展的早期,計(jì)算機(jī)的存儲(chǔ)容量很小。所以對(duì)空間復(fù)雜度很是在乎。但是經(jīng)過(guò)計(jì)算機(jī)行業(yè)的 迅速發(fā)展,計(jì)算機(jī)的存儲(chǔ)容量已經(jīng)達(dá)到了很高的程度。所以我們?nèi)缃褚呀?jīng)不需要再特別關(guān)注一個(gè)算法的空間復(fù) 雜度。

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

1.時(shí)間復(fù)雜度概念

一個(gè)算法所花費(fèi)的時(shí)間與其中語(yǔ)句的執(zhí)行次數(shù)成正比例,算法中的基本操作的執(zhí)行次數(shù),為算法的時(shí)間復(fù) 雜度。也就是說(shuō)當(dāng)我們拿到一個(gè)代碼,來(lái)看這個(gè)代碼的時(shí)間復(fù)雜度的時(shí)候,主要是去找這個(gè)代碼當(dāng)中執(zhí)行語(yǔ)句次數(shù)最多的代碼執(zhí)行了多少次。

2.大O的漸進(jìn)表示法

看圖分析:

當(dāng)N的值越來(lái)越大,2N和10的值就可以忽略不記了。 

實(shí)際中我們計(jì)算時(shí)間復(fù)雜度時(shí),我們其實(shí)并不一定要計(jì)算精確的執(zhí)行次數(shù),而只需要大概執(zhí)行次數(shù),那么這里 我們使用大O的漸進(jìn)表示法。

 大O符號(hào)(Big O notation):是用于描述函數(shù)漸進(jìn)行為的數(shù)學(xué)符號(hào)。

1、用常數(shù)1取代運(yùn)行時(shí)間中的所有加法常數(shù)。

2、在修改后的運(yùn)行次數(shù)函數(shù)中,只保留最高階項(xiàng)。

3、如果最高階項(xiàng)存在且不是1,則去除與這個(gè)項(xiàng)目相乘的常數(shù)。得到的結(jié)果就是大O階。

通過(guò)上面我們會(huì)發(fā)現(xiàn)大O的漸進(jìn)表示法去掉了那些對(duì)結(jié)果影響不大的項(xiàng),簡(jiǎn)潔明了的表示出了執(zhí)行次數(shù)。

另外有些算法的時(shí)間復(fù)雜度存在最好、平均和最壞情況:

最壞情況:任意輸入規(guī)模的最大運(yùn)行次數(shù)(上界)

平均情況:任意輸入規(guī)模的期望運(yùn)行次數(shù)

最好情況:任意輸入規(guī)模的最小運(yùn)行次數(shù)(下界) 

例如:在一個(gè)長(zhǎng)度為N數(shù)組中搜索一個(gè)數(shù)據(jù)x

最好情況:1次找到

最壞情況:N次找到

平均情況:N/2次找到 

在實(shí)際中一般情況關(guān)注的是算法的最壞運(yùn)行情況,所以數(shù)組中搜索數(shù)據(jù)時(shí)間復(fù)雜度為O(N)

計(jì)算時(shí)間復(fù)雜度  

例題1:

基本操作執(zhí)行了2N+10次,通過(guò)推導(dǎo)大O階方法知道,時(shí)間復(fù)雜度為 O(N)

例題2:

基本操作執(zhí)行了M+N次,有兩個(gè)未知數(shù)M和N,時(shí)間復(fù)雜度為 O(N+M)

例題3:

基本操作執(zhí)行了100次,通過(guò)推導(dǎo)大O階方法,時(shí)間復(fù)雜度為 O(1)

例題4:計(jì)算冒泡排序的時(shí)間復(fù)雜度

基本操作執(zhí)行最好N次,最壞執(zhí)行了(N*(N-1))/2次,通過(guò)推導(dǎo)大O階方法+時(shí)間復(fù)雜度一般看最壞, 時(shí)間復(fù)雜度為 O(N^2

例題5:二分查找的時(shí)間復(fù)雜度

基本操作執(zhí)行最好1次,最壞O(logN)次,時(shí)間復(fù)雜度為 O(logN) ps:logN在算法分析中表示是底數(shù) 為2,對(duì)數(shù)為N。有些地方會(huì)寫成lgN。(建議通過(guò)折紙查找的方式講解logN是怎么計(jì)算出來(lái)的)(因?yàn)槎?分查找每次排除掉一半的不適合值,一次二分剩下:n/2 兩次二分剩下:n/2/2 = n/4)

例題6:計(jì)算階乘遞歸的時(shí)間復(fù)雜度

遞歸的時(shí)間復(fù)雜度 = 遞歸的次數(shù)*每次遞歸執(zhí)行的次數(shù)

通過(guò)計(jì)算分析發(fā)現(xiàn)基本操作遞歸了N次,時(shí)間復(fù)雜度為O(N)。

例題7:計(jì)算斐波那契遞歸的時(shí)間復(fù)雜度

通過(guò)計(jì)算分析發(fā)現(xiàn)基本操作遞歸了2^N次,時(shí)間復(fù)雜度為O(2^N)。

規(guī)律: 

 2^0+2^1+2^2+2^3……2^(n-(n-1))

等比數(shù)列求和

 a1就代表第一項(xiàng),q是等比就是2,1(1-2^n)/-1,相當(dāng)于2^n+1,所以時(shí)間復(fù)雜度為O(2^n)

三、空間復(fù)雜度 

空間復(fù)雜度是對(duì)一個(gè)算法在運(yùn)行過(guò)程中臨時(shí)占用存儲(chǔ)空間大小的量度 ??臻g復(fù)雜度不是程序占用了多少bytes 的空間,因?yàn)檫@個(gè)也沒(méi)太大意義,所以空間復(fù)雜度算的是變量的個(gè)數(shù)??臻g復(fù)雜度計(jì)算規(guī)則基本跟實(shí)踐復(fù)雜度 類似,也使用大O漸進(jìn)表示法。

 例題1:計(jì)算冒泡排序的空間復(fù)雜度

使用了常數(shù)個(gè)額外空間,所以空間復(fù)雜度為 O(1)

 例題2:計(jì)算斐波那契的空間復(fù)雜度

動(dòng)態(tài)開(kāi)辟了N個(gè)空間,空間復(fù)雜度為 O(N)

例題3:計(jì)算階乘遞歸的空間復(fù)雜度

  遞歸調(diào)用了N次,開(kāi)辟了N個(gè)棧幀,每個(gè)棧幀使用了常數(shù)個(gè)空間??臻g復(fù)雜度為O(N)

總結(jié):

本文簡(jiǎn)單介紹了什么是時(shí)間復(fù)雜度、空間復(fù)雜度,通過(guò)簡(jiǎn)單例題的方式加深對(duì)數(shù)組的理解。上述就是今天的內(nèi)容,有任何疑問(wèn)的話可以隨時(shí)私信我,文章哪里出現(xiàn)了問(wèn)題我都會(huì)積極改正,也希望大家能更快的掌握自己想要的知識(shí),讓我們一起加油!?。。?!

到此這篇關(guān)于Java 精煉解讀時(shí)間復(fù)雜度與空間復(fù)雜度的文章就介紹到這了,更多相關(guān)Java 時(shí)間復(fù)雜度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Java制作字符動(dòng)畫實(shí)例代碼

    利用Java制作字符動(dòng)畫實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何利用Java制作字符動(dòng)畫的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • java中unicode和中文相互轉(zhuǎn)換的簡(jiǎn)單實(shí)現(xiàn)

    java中unicode和中文相互轉(zhuǎn)換的簡(jiǎn)單實(shí)現(xiàn)

    下面小編就為大家?guī)?lái)一篇java中unicode和中文相互轉(zhuǎn)換的簡(jiǎn)單實(shí)現(xiàn)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • 23種設(shè)計(jì)模式(15)java解釋器模式

    23種設(shè)計(jì)模式(15)java解釋器模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計(jì)模式之java解釋器模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Java?深入理解創(chuàng)建型設(shè)計(jì)模式之原型模式

    Java?深入理解創(chuàng)建型設(shè)計(jì)模式之原型模式

    原型(Prototype)模式的定義如下:用一個(gè)已經(jīng)創(chuàng)建的實(shí)例作為原型,通過(guò)復(fù)制該原型對(duì)象來(lái)創(chuàng)建一個(gè)和原型相同或相似的新對(duì)象。在這里,原型實(shí)例指定了要?jiǎng)?chuàng)建的對(duì)象的種類。用這種方式創(chuàng)建對(duì)象非常高效,根本無(wú)須知道對(duì)象創(chuàng)建的細(xì)節(jié)
    2022-02-02
  • SpringBoot整合Liquibase實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)管理和遷移

    SpringBoot整合Liquibase實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)管理和遷移

    Liquibase是一個(gè)用于用于跟蹤、管理和應(yīng)用數(shù)據(jù)庫(kù)變化的開(kāi)源工具,通過(guò)日志文件(changelog)的形式記錄數(shù)據(jù)庫(kù)的變更(changeset),然后執(zhí)行日志文件中的修改,將數(shù)據(jù)庫(kù)更新或回滾(rollback)到一致的狀態(tài),本文主要介紹SpringBoot與Liquibase的集成,需要的朋友可以參考下
    2024-11-11
  • Java利用Zxing生成二維碼的簡(jiǎn)單實(shí)例

    Java利用Zxing生成二維碼的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇Java利用Zxing生成二維碼的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-08-08
  • Spring中的AOP原理與使用詳解

    Spring中的AOP原理與使用詳解

    這篇文章主要介紹了Spring中的AOP原理與使用詳解,AOP意為面向切面編程,可以通過(guò)預(yù)編譯方式或運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)在不修改源代碼的情況下給程序動(dòng)態(tài)統(tǒng)一添加功能的一種技術(shù),需要的朋友可以參考下
    2023-12-12
  • spring?cloud?使用oauth2?問(wèn)題匯總

    spring?cloud?使用oauth2?問(wèn)題匯總

    這篇文章主要介紹了spring?cloud?使用oauth2?問(wèn)題匯總,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • Spring七大事務(wù)傳遞機(jī)制深入分析實(shí)現(xiàn)原理

    Spring七大事務(wù)傳遞機(jī)制深入分析實(shí)現(xiàn)原理

    實(shí)際項(xiàng)目開(kāi)發(fā)中,如果涉及到多張表操作時(shí),為了保證業(yè)務(wù)數(shù)據(jù)的一致性,大家一般都會(huì)采用事務(wù)機(jī)制,好多小伙伴可能只是簡(jiǎn)單了解一下,遇到事務(wù)失效的情況,便會(huì)無(wú)從下手,下面這篇文章主要給大家介紹了關(guān)于Spring事務(wù)傳遞機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • TCP/IP協(xié)議中三次握手四次揮手的原理及流程分析

    TCP/IP協(xié)議中三次握手四次揮手的原理及流程分析

    這篇文章主要介紹了TCP/IP協(xié)議中三次握手四次揮手的原理及流程分析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論

民县| 扎鲁特旗| 高要市| 珠海市| 晋江市| 班玛县| 房产| 三亚市| 鲜城| 神木县| 师宗县| 长乐市| 邵东县| 鱼台县| 永顺县| 从江县| 凤山市| 景德镇市| 延庆县| 漳浦县| 枣庄市| 太康县| 商水县| 汉川市| 若尔盖县| 堆龙德庆县| 历史| 永城市| 孙吴县| 浙江省| 手机| 清流县| 七台河市| 抚宁县| 岱山县| 百色市| 浦县| 平和县| 秀山| 东兴市| 平南县|