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

Java?精煉解讀時間復雜度與空間復雜度

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

前言:

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

一、算法效率

算法效率分析分為兩種:第一種是時間效率,第二種是空間效率。時間效率被稱為時間復雜度,而空間效率被 稱作空間復雜度。 時間復雜度主要衡量的是一個算法的運行速度,而空間復雜度主要衡量一個算法所需要的額 外空間,在計算機發(fā)展的早期,計算機的存儲容量很小。所以對空間復雜度很是在乎。但是經過計算機行業(yè)的 迅速發(fā)展,計算機的存儲容量已經達到了很高的程度。所以我們如今已經不需要再特別關注一個算法的空間復 雜度。

二、時間復雜度

1.時間復雜度概念

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

2.大O的漸進表示法

看圖分析:

當N的值越來越大,2N和10的值就可以忽略不記了。 

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

 大O符號(Big O notation):是用于描述函數漸進行為的數學符號。

1、用常數1取代運行時間中的所有加法常數。

2、在修改后的運行次數函數中,只保留最高階項。

3、如果最高階項存在且不是1,則去除與這個項目相乘的常數。得到的結果就是大O階。

通過上面我們會發(fā)現大O的漸進表示法去掉了那些對結果影響不大的項,簡潔明了的表示出了執(zhí)行次數。

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

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

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

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

例如:在一個長度為N數組中搜索一個數據x

最好情況:1次找到

最壞情況:N次找到

平均情況:N/2次找到 

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

計算時間復雜度  

例題1:

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

例題2:

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

例題3:

基本操作執(zhí)行了100次,通過推導大O階方法,時間復雜度為 O(1)

例題4:計算冒泡排序的時間復雜度

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

例題5:二分查找的時間復雜度

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

例題6:計算階乘遞歸的時間復雜度

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

通過計算分析發(fā)現基本操作遞歸了N次,時間復雜度為O(N)。

例題7:計算斐波那契遞歸的時間復雜度

通過計算分析發(fā)現基本操作遞歸了2^N次,時間復雜度為O(2^N)。

規(guī)律: 

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

等比數列求和

 a1就代表第一項,q是等比就是2,1(1-2^n)/-1,相當于2^n+1,所以時間復雜度為O(2^n)

三、空間復雜度 

空間復雜度是對一個算法在運行過程中臨時占用存儲空間大小的量度 ??臻g復雜度不是程序占用了多少bytes 的空間,因為這個也沒太大意義,所以空間復雜度算的是變量的個數??臻g復雜度計算規(guī)則基本跟實踐復雜度 類似,也使用大O漸進表示法。

 例題1:計算冒泡排序的空間復雜度

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

 例題2:計算斐波那契的空間復雜度

動態(tài)開辟了N個空間,空間復雜度為 O(N)

例題3:計算階乘遞歸的空間復雜度

  遞歸調用了N次,開辟了N個棧幀,每個棧幀使用了常數個空間??臻g復雜度為O(N)

總結:

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

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

相關文章

  • 利用Java制作字符動畫實例代碼

    利用Java制作字符動畫實例代碼

    這篇文章主要給大家介紹了關于如何利用Java制作字符動畫的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • java中unicode和中文相互轉換的簡單實現

    java中unicode和中文相互轉換的簡單實現

    下面小編就為大家?guī)硪黄猨ava中unicode和中文相互轉換的簡單實現。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 23種設計模式(15)java解釋器模式

    23種設計模式(15)java解釋器模式

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

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

    原型(Prototype)模式的定義如下:用一個已經創(chuàng)建的實例作為原型,通過復制該原型對象來創(chuàng)建一個和原型相同或相似的新對象。在這里,原型實例指定了要創(chuàng)建的對象的種類。用這種方式創(chuàng)建對象非常高效,根本無須知道對象創(chuàng)建的細節(jié)
    2022-02-02
  • SpringBoot整合Liquibase實現對數據庫管理和遷移

    SpringBoot整合Liquibase實現對數據庫管理和遷移

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

    Java利用Zxing生成二維碼的簡單實例

    下面小編就為大家?guī)硪黄狫ava利用Zxing生成二維碼的簡單實例。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • Spring中的AOP原理與使用詳解

    Spring中的AOP原理與使用詳解

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

    spring?cloud?使用oauth2?問題匯總

    這篇文章主要介紹了spring?cloud?使用oauth2?問題匯總,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • Spring七大事務傳遞機制深入分析實現原理

    Spring七大事務傳遞機制深入分析實現原理

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

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

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

最新評論

赤城县| 彭山县| 衡南县| 澳门| 肇州县| 定结县| 尼玛县| 申扎县| 陕西省| 德令哈市| 五寨县| 白河县| 南开区| 勐海县| 三门峡市| 新野县| 临猗县| 青海省| 沙雅县| 彭水| 阳新县| 西乌珠穆沁旗| 文安县| 长沙市| 城步| 灌阳县| 浮山县| 郸城县| 锡林浩特市| 西充县| 牙克石市| 信丰县| 栖霞市| 香格里拉县| 平遥县| 松阳县| 文化| 固安县| 尚志市| 韩城市| 泗阳县|