欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之時(shí)間復(fù)雜度與空間復(fù)雜度

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

概述

從今天開始, 小白我將帶大家開啟 Jave 數(shù)據(jù)結(jié)構(gòu) & 算法的新篇章.

算法的衡量標(biāo)準(zhǔn)

當(dāng)我們需要衡量一個(gè)算法的的優(yōu)越性, 通常會(huì)使用時(shí)間復(fù)雜度 (Time Complexity) 和空間復(fù)雜度 (Space Complexity) 來衡量.

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

時(shí)間復(fù)雜度 (Time Complexity) 通常用 O(n) 表示, 用來描述一個(gè)算法運(yùn)行的時(shí)間.

時(shí)間復(fù)雜度 & 空間復(fù)雜度計(jì)算規(guī)則:

  • 用常數(shù) 1 代替運(yùn)行中的所有加減, lim n->∞cn = ∞
  • 只保留最高項(xiàng), lim n->∞ n^2 + an + b = lim n->∞ n^2

最優(yōu)時(shí)間復(fù)雜度

最優(yōu)時(shí)間復(fù)雜度指的是在最優(yōu)的情況下算法需要的運(yùn)行時(shí)間.

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

平均時(shí)間復(fù)雜度是指所有可能的輸入實(shí)例以等概率出現(xiàn)的情況下, 算法需要的運(yùn)行時(shí)間.

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

最壞時(shí)間復(fù)雜度指的是在最壞的情況下算法需要的運(yùn)行時(shí)間. 一般使用最壞時(shí)間復(fù)雜度作為時(shí)間復(fù)雜度.

O(1)

沒有循環(huán)結(jié)構(gòu), 只有普通加減的代碼時(shí)間復(fù)雜度為 O(1).

例如:

int i = 1;
int j = 2;
int k = i + j;  // 1+2=3

O(n)

循環(huán) n 次的代碼的時(shí)間復(fù)雜度為 O(n).

例子:

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

O(n^2)

兩層循環(huán)嵌套的時(shí)間復(fù)雜度為 O(n^2). 如下例子, 需要進(jìn)行 2n^2 次計(jì)算

例子:

int sum = 0;

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

O(logN)

2^n = N, 所以會(huì)循環(huán) logN 次.

例子:

int sum = 0;

for (int i = 0; i < n; i++) {
    sum += i;
    i *= 2;
}

空間復(fù)雜度

空間復(fù)雜度 (Space Complexity) 定義為該算法所耗費(fèi)的存儲(chǔ)空間.

O(1)

如果算法執(zhí)行所需要的臨時(shí)空間不會(huì)隨著變量的大小而變化, 那么空間復(fù)雜度就為 O(1).

例子:

int i = 1;
int j = 2;
int k = i + j;  // 1+2=3

O(n)

長度為 n 的數(shù)組占用空間為 O(n).

例子:

int[] array = new int[n]

到此這篇關(guān)于Java 數(shù)據(jù)結(jié)構(gòu)與算法系列精講之時(shí)間復(fù)雜度與空間復(fù)雜度的文章就介紹到這了,更多相關(guān)Java 時(shí)間復(fù)雜度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pageHelper一對(duì)多分頁解決方案示例

    pageHelper一對(duì)多分頁解決方案示例

    這篇文章主要為大家介紹了pageHelper一對(duì)多分頁解決方案示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Java分頁查詢--分頁顯示(實(shí)例講解)

    Java分頁查詢--分頁顯示(實(shí)例講解)

    下面小編就為大家?guī)硪黄狫ava分頁查詢--分頁顯示(實(shí)例講解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置問題及解決方法

    這篇文章主要介紹了SpringBoot多數(shù)據(jù)源讀寫分離的自定義配置,我們可以通過自定義配置數(shù)據(jù)庫配置類來解決這個(gè)問題,方式有很多,不同的業(yè)務(wù)采用的方式也不同,下面我簡單的介紹我們項(xiàng)目的使用的方法
    2022-06-06
  • Intellij idea熱部署插件JRebel的使用

    Intellij idea熱部署插件JRebel的使用

    這篇文章主要介紹了Intellij idea熱部署插件JRebel的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Java?延時(shí)隊(duì)列及簡單使用方式詳解

    Java?延時(shí)隊(duì)列及簡單使用方式詳解

    這篇文章主要介紹了Java延時(shí)隊(duì)列簡單使用方式,通過本文學(xué)習(xí)知道延時(shí)隊(duì)列是什么可以用來干什么,本文通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • SpringBoot中MyBatis-Flex的集成和使用實(shí)現(xiàn)

    SpringBoot中MyBatis-Flex的集成和使用實(shí)現(xiàn)

    MyBatis-Flex是一個(gè)基于MyBatis的數(shù)據(jù)訪問框架,MyBatis-Flex能夠極大地提高我們的開發(fā)效率和開發(fā)體驗(yàn),本文主要介紹了SpringBoot中MyBatis-Flex的集成和使用實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例

    Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例

    上傳是Web工程中很常見的功能,SpringMVC框架簡化了文件上傳的代碼,本文給大家總結(jié)了Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例,并通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2024-02-02
  • Java+swing+Mysql實(shí)現(xiàn)商品銷售管理系統(tǒng)

    Java+swing+Mysql實(shí)現(xiàn)商品銷售管理系統(tǒng)

    基礎(chǔ)扎不扎實(shí)只有在實(shí)戰(zhàn)中才能顯現(xiàn),本篇文章手把手帶你用Java+swing+Mysql實(shí)現(xiàn)商品銷售管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01
  • 詳解MybatisPlus中@TableLogic注解的使用

    詳解MybatisPlus中@TableLogic注解的使用

    @TableLogic一般用于實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)邏輯刪除,本文我們將介紹 @TableLogic 注解的用法,以及每個(gè)屬性的實(shí)際意義和用法,感興趣的可以了解一下
    2022-06-06
  • Java Spring JdbcTemplate基本使用詳解

    Java Spring JdbcTemplate基本使用詳解

    JDBC已經(jīng)能夠滿足大部分用戶最基本的需求,但是在使用JDBC時(shí),必須自己來管理數(shù)據(jù)庫資源如:獲取PreparedStatement,設(shè)置SQL語句參數(shù),關(guān)閉連接等步驟
    2021-10-10

最新評(píng)論