国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解

這篇具有很好參考價(jià)值的文章主要介紹了數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

復(fù)雜度是我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的第一節(jié),下面是我對(duì)該知識(shí)內(nèi)容的一些理解。

1.什么是數(shù)據(jù)結(jié)構(gòu)

概念:數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式,指互相之間存在的一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。

在實(shí)現(xiàn)一些項(xiàng)目時(shí),需要在內(nèi)存中將數(shù)據(jù)存儲(chǔ)起來(lái),存儲(chǔ)需要各種方式,這些方式就被稱作數(shù)據(jù)結(jié)構(gòu),我們學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)就是要懂用哪種方式存儲(chǔ)更加合適。

2.什么是算法

概念:定義良好的計(jì)算過程,他取一個(gè)或一組的值為輸入,并產(chǎn)生一個(gè)或一組值為輸出。簡(jiǎn)單來(lái)說算法就是一系列的計(jì)算步驟,用來(lái)將輸入數(shù)據(jù)轉(zhuǎn)化為輸出結(jié)果。就如購(gòu)物,我們經(jīng)常通常會(huì)用到排序,如以價(jià)格排序等等,這里的排序就是一種算法。

那么如何衡量一個(gè)算法的好壞,就要引出我們的學(xué)習(xí)內(nèi)容——算法的時(shí)間復(fù)雜度和空間復(fù)雜度

3.算法的復(fù)雜度

算法在編寫可執(zhí)行程序后,運(yùn)行是需要耗費(fèi)時(shí)間資源和空間資源,因此衡量一個(gè)算法的好壞,一般是從時(shí)間和空間兩個(gè)維度來(lái)衡量,即時(shí)間復(fù)雜度和空間復(fù)雜度。

時(shí)間復(fù)雜度主要衡量一個(gè)算法運(yùn)行的快慢,而空間復(fù)雜度主要衡量一個(gè)算法運(yùn)行所需要的額外空間。經(jīng)過計(jì)算機(jī)行業(yè)的迅速發(fā)展,根據(jù)摩爾定律,計(jì)算機(jī)的存儲(chǔ)容量已經(jīng)達(dá)到很高的程度。(摩爾定律是指IC上可容納的晶體管數(shù)目,約每隔18個(gè)月便會(huì)增加一倍,性能也將提升一倍。

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

概念:在計(jì)算機(jī)科學(xué)中,算法的時(shí)間復(fù)雜度是一個(gè)函數(shù),他描述了算法的運(yùn)行時(shí)間,但不同性能的計(jì)算機(jī)他的運(yùn)行時(shí)間不能比較,所以有了時(shí)間復(fù)雜度這個(gè)分析方式,一個(gè)算法的所花費(fèi)的時(shí)間與其中語(yǔ)句的執(zhí)行次數(shù)成正比例,算法中的基本操作的執(zhí)行次數(shù),為算法的時(shí)間復(fù)雜度。

舉例1:

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

該例寫成函數(shù)為:F(N)=N^2+2*N+10?

N無(wú)窮大時(shí),N^2遠(yuǎn)遠(yuǎn)大于其他幾位,實(shí)際中我們計(jì)算時(shí)間復(fù)雜度,不一定要計(jì)算到精確的次數(shù),只需要大概的執(zhí)行次數(shù),那么這里我們用大O的漸進(jìn)表示法。

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

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

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

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

該例使用大O的漸進(jìn)表示時(shí)間復(fù)雜度為: O(N^2)

在實(shí)際中一般情況關(guān)注的是算法的最壞運(yùn)行情況

舉例2:數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

strchr函數(shù)是C語(yǔ)言中的一個(gè)字符串處理函數(shù),主要用于在一個(gè)字符串中查找指定字符的首次出現(xiàn)位置。如果找到該字符,則返回指向該字符的指針;如果沒有找到,則返回NULL。這個(gè)函數(shù)在很多程序中都非常有用,特別是在需要對(duì)字符串進(jìn)行逐字符處理的情況下。

在該例中,我們就該用最壞運(yùn)行情況

舉例3:冒泡排序

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

該算法我們光從代碼中很難看出執(zhí)行次數(shù),因此我們需要通過代碼的思想來(lái)計(jì)算次數(shù)。

在冒泡排序中,第一趟執(zhí)行了N-1次,第二趟執(zhí)行N-2次...,不難看出這是一個(gè)等差數(shù)列

故精確的執(zhí)行次數(shù)為:F(N)=N*(N-1)/2? ? ? O(N)=N^2

舉例4:

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

假設(shè)要查找X次,我們找一次數(shù)組中的數(shù)字少一半,最壞的情況就是左邊的數(shù)等于右邊的數(shù),數(shù)組中只有一個(gè)數(shù),在這種情況下,我們找一次數(shù)組中的元素就要除2,反過來(lái)推就是1*2*2*2*...=N,我們執(zhí)行了多少次就要乘多少個(gè)2,故2^X=N,X=log2N

舉例5:

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

遞歸算法的次數(shù)=遞歸次數(shù)*每次遞歸調(diào)用的次數(shù)

遞歸了N次,時(shí)間復(fù)雜度為O(N)

舉例6:(通過畫圖分析)

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

Fib(N)=2^1+2^2+2^3+....+2^(N-1)-X=2^N-1-X

O(N)=2^N

等比數(shù)列求和公式:數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

4.空間復(fù)雜度

空間復(fù)雜度也是一個(gè)數(shù)學(xué)函數(shù)表達(dá)式,是對(duì)一個(gè)算法在運(yùn)行過程中臨時(shí)額外占用存儲(chǔ)空間大小的量度。

空間復(fù)雜度不是程序占用了多少bytes的空間,因?yàn)檫@個(gè)也沒太大意義,所以空間復(fù)雜度計(jì)算的是變量的個(gè)數(shù)。

空間復(fù)雜度計(jì)算規(guī)則基本跟實(shí)踐復(fù)雜度類似,也使大O漸進(jìn)表示法

注意:(遞歸算法)函數(shù)運(yùn)行時(shí)所需要的??臻g(存儲(chǔ)參數(shù)、局部變量、一些寄存器信息等)在編譯期間已經(jīng)確定好了,因此空間復(fù)雜度主要通過函數(shù)在運(yùn)行時(shí)候顯式申請(qǐng)的額外空間來(lái)確定。

舉例1:數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

在進(jìn)行這個(gè)算法時(shí)定義的額外變量,在第一個(gè)i完成循環(huán)后空間會(huì)被銷毀,第二個(gè)i和他用的是同一塊空間,所以循環(huán)只額外使用了兩個(gè)空間,故空間復(fù)雜度為:O(1)

(空間可以重復(fù)利用,不累計(jì))

舉例2:

數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解,數(shù)據(jù)結(jié)構(gòu)

棧的空間不大,如果是2^N,空間不夠。空間是可以重復(fù)利用不累計(jì)的,時(shí)間是一去不復(fù)返,累積的。豎著先調(diào)用一遍,然后返回時(shí)銷毀,在進(jìn)行第二個(gè)調(diào)用。右邊調(diào)用和左邊的調(diào)用重復(fù)用了同一片空間,故空間復(fù)雜度:O(N)

每次調(diào)用都要建立棧幀,再算到最后一個(gè)時(shí)返回才會(huì)銷毀額外建立的棧幀,要看遞歸的深度。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-828725.html

到了這里,關(guān)于數(shù)據(jù)結(jié)構(gòu)——復(fù)雜度講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 數(shù)據(jù)結(jié)構(gòu)----完全二叉樹的時(shí)間復(fù)雜度講解,堆排序

    數(shù)據(jù)結(jié)構(gòu)----完全二叉樹的時(shí)間復(fù)雜度講解,堆排序

    目錄 一.建堆的時(shí)間復(fù)雜度 1.向上調(diào)整算法建堆 2.向下調(diào)整算法建堆 二.堆排序 1.概念 2.代碼思路 3.代碼實(shí)現(xiàn) 我們就以極端情況考慮時(shí)間復(fù)雜度(滿二叉樹+遍歷所有層) 假設(shè)所有節(jié)點(diǎn)個(gè)數(shù)為N,樹的高度為h N = 2^0+2^1+2^2......+2^(h-1) 即N = 2^h - 1 h = log(N+1) 時(shí)間復(fù)雜度我們以交換次數(shù)為

    2024年03月14日
    瀏覽(29)
  • 數(shù)據(jù)結(jié)構(gòu)(時(shí)間復(fù)雜度,空間復(fù)雜度)

    數(shù)據(jù)結(jié)構(gòu)(時(shí)間復(fù)雜度,空間復(fù)雜度)

    算法的時(shí)間復(fù)雜度是一個(gè)數(shù)學(xué)函數(shù),算法中的基本操作的執(zhí)行次數(shù),為算法的時(shí)間復(fù)雜度。 1.大O的表示法 2.推導(dǎo)大O表示法 1、用常數(shù)1取代運(yùn)行時(shí)間中的所有加法常數(shù)。 2、在修改后的運(yùn)行次數(shù)函數(shù)中,只保留最高階項(xiàng)。 3、如果最高階項(xiàng)存在且不是1,則去除與這個(gè)項(xiàng)目相乘的

    2024年02月07日
    瀏覽(28)
  • 數(shù)據(jù)結(jié)構(gòu) — 時(shí)間復(fù)雜度、空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu) — 時(shí)間復(fù)雜度、空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)_空間復(fù)雜度_時(shí)間復(fù)雜度講解_常見復(fù)雜度對(duì)比 本文介紹數(shù)據(jù)結(jié)構(gòu)中的時(shí)間復(fù)雜度和空間復(fù)雜度 ***文章末尾,博主進(jìn)行了概要總結(jié),可以直接看總結(jié)部分*** 博主博客鏈接:https://blog.csdn.net/m0_74014525 點(diǎn)點(diǎn)關(guān)注,后期持續(xù)更新系列文章 算法效率指的是算法在處理數(shù)據(jù)時(shí)

    2024年02月13日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)之時(shí)間復(fù)雜度-空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)之時(shí)間復(fù)雜度-空間復(fù)雜度

    大家好,我是深魚~ 目錄 1.數(shù)據(jù)結(jié)構(gòu)前言 1.1什么是數(shù)據(jù)結(jié)構(gòu) 1.2什么是算法 1.3數(shù)據(jù)結(jié)構(gòu)和算法的重要性 1.4如何學(xué)好數(shù)據(jù)結(jié)構(gòu)和算法 2.算法的效率 3.時(shí)間復(fù)雜度 3.1時(shí)間復(fù)雜度的概念 3.2大O的漸進(jìn)表示法 【實(shí)例1】:雙重循環(huán)的時(shí)間復(fù)雜度:O(N) 【實(shí)例2】:雙重循環(huán)的時(shí)間復(fù)雜度

    2024年02月14日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】---時(shí)間復(fù)雜度與空間復(fù)雜度

    【數(shù)據(jù)結(jié)構(gòu)】---時(shí)間復(fù)雜度與空間復(fù)雜度

    ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ???? ?? ?? ?? 個(gè)人主頁(yè) :阿然成長(zhǎng)日記 ??點(diǎn)擊可跳轉(zhuǎn) ?? 個(gè)人專欄: ??數(shù)據(jù)結(jié)構(gòu)與算法??C語(yǔ)言進(jìn)階 ?? 不能則學(xué),不知?jiǎng)t問,恥于問人,決無(wú)長(zhǎng)進(jìn) ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? · 時(shí)間復(fù)雜度的定義

    2024年02月15日
    瀏覽(21)
  • 【數(shù)據(jù)結(jié)構(gòu)】時(shí)間復(fù)雜度與空間復(fù)雜度

    【數(shù)據(jù)結(jié)構(gòu)】時(shí)間復(fù)雜度與空間復(fù)雜度

    在學(xué)習(xí)C語(yǔ)言的時(shí)候,大多數(shù)的小伙伴們并不會(huì)對(duì)算法的效率了解,也許算法也是一個(gè)陌生的領(lǐng)域,當(dāng)進(jìn)入了數(shù)據(jù)結(jié)構(gòu)這個(gè)模塊,就應(yīng)該對(duì)算法的效率做一個(gè)清晰的認(rèn)識(shí)。但是算法的效率是什么呢?這里就引出來(lái)時(shí)間復(fù)雜度與空間復(fù)雜度的概念了。 算法效率 指的是算法解決問

    2024年02月07日
    瀏覽(27)
  • 數(shù)據(jù)結(jié)構(gòu)入門 — 時(shí)間復(fù)雜度、空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)入門 — 時(shí)間復(fù)雜度、空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)_空間復(fù)雜度_時(shí)間復(fù)雜度講解_常見復(fù)雜度對(duì)比 本文介紹數(shù)據(jù)結(jié)構(gòu)中的時(shí)間復(fù)雜度和空間復(fù)雜度 ***文章末尾,博主進(jìn)行了概要總結(jié),可以直接看總結(jié)部分*** 博主博客鏈接:https://blog.csdn.net/m0_74014525 點(diǎn)點(diǎn)關(guān)注,后期持續(xù)更新系列文章 算法效率指的是算法在處理數(shù)據(jù)時(shí)

    2024年02月13日
    瀏覽(30)
  • 數(shù)據(jù)結(jié)構(gòu)--時(shí)間復(fù)雜度與空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)--時(shí)間復(fù)雜度與空間復(fù)雜度

    在計(jì)算機(jī)科學(xué)中,算法的時(shí)間復(fù)雜度是一個(gè)函數(shù),它定量描述了該算法的運(yùn)行時(shí)間。一個(gè)算法執(zhí)行所耗費(fèi)的時(shí)間,從理論上說,是不能算出來(lái)的,只有程序在機(jī)器上跑起來(lái),才能知道,但是如果所有的算法都需要在機(jī)器上運(yùn)行起來(lái)去測(cè)試時(shí)間復(fù)雜度就會(huì)很麻煩,所以才有了時(shí)

    2024年02月16日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)——時(shí)間復(fù)雜度和空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)——時(shí)間復(fù)雜度和空間復(fù)雜度

    1.算法效率 2.時(shí)間復(fù)雜度 3.空間復(fù)雜度 4. 常見時(shí)間復(fù)雜度以及復(fù)雜度oj練習(xí) 1.算法效率 1.1 如何衡量一個(gè)算法的好壞 如何衡量一個(gè)算法的好壞呢?比如對(duì)于以下斐波那契數(shù)的計(jì)算 我們看到雖然用遞歸的方式實(shí)現(xiàn)斐波那契很簡(jiǎn)單,但是簡(jiǎn)單一定代表效率高嗎? 我們接著往下看。

    2024年02月13日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)——時(shí)間復(fù)雜度與空間復(fù)雜度

    數(shù)據(jù)結(jié)構(gòu)——時(shí)間復(fù)雜度與空間復(fù)雜度

    目錄 一.什么是空間復(fù)雜度與時(shí)間復(fù)雜度 1.1算法效率 1.2時(shí)間復(fù)雜度的概念 1.3空間復(fù)雜度的概念 二.如何計(jì)算常見算法的時(shí)間復(fù)雜度 2.1大O的漸近表示法 ?使用規(guī)則 三.如何計(jì)算常見算法的空間復(fù)雜度 3.1 大O漸近表示法 3.2 面試題——消失的數(shù)字 ?3.3 面試題——旋轉(zhuǎn)數(shù)組 分為兩

    2024年02月07日
    瀏覽(15)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包