1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        數(shù)據(jù)結(jié)構(gòu)與算法是什么?

        共 1544字,需瀏覽 4分鐘

         ·

        2021-10-28 22:41

        在計(jì)算機(jī)科學(xué)中,數(shù)據(jù)結(jié)構(gòu)(Data Structure)是計(jì)算機(jī)中存儲(chǔ)、組織數(shù)據(jù)的方式。為什么數(shù)據(jù)結(jié)構(gòu)和算法經(jīng)常放在一起討論?算法用來(lái)設(shè)計(jì)一種使用計(jì)算機(jī)來(lái)解決問(wèn)題的方法。設(shè)計(jì)高效的算法又是怎么來(lái)實(shí)現(xiàn)的?在我們學(xué)習(xí)了計(jì)算機(jī)編程后,也要學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法這些基礎(chǔ)內(nèi)容。

        一、數(shù)據(jù)結(jié)構(gòu)

        我們經(jīng)常會(huì)聽到有人說(shuō)起:程序 = 數(shù)據(jù)結(jié)構(gòu) + 算法,當(dāng)我們遇到一個(gè)問(wèn)題,或有一個(gè)需求時(shí),在設(shè)計(jì)程序來(lái)解決問(wèn)題時(shí),其中重要一步就是設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)在問(wèn)題解決中主要用來(lái):

        • 存放要處理的數(shù)據(jù)

        • 實(shí)現(xiàn)算法策略

        數(shù)據(jù)結(jié)構(gòu)可以用一個(gè)四元組來(lái)表示:

        DataStructure = (D, L, S, O)

        它包括數(shù)據(jù)元素(D)、數(shù)據(jù)元素之間的邏輯關(guān)系(L)、邏輯關(guān)系在計(jì)算機(jī)中的存儲(chǔ)結(jié)構(gòu)(S)和所規(guī)定的操作(O)這四部分。

        7e234a3ba8d7ff4c9d842db731355677.webp

        計(jì)算機(jī)中數(shù)據(jù)的相關(guān)術(shù)語(yǔ):

        • 數(shù)據(jù)(Data):所有能夠被計(jì)算機(jī)識(shí)別的符號(hào)集合。

        • 數(shù)據(jù)元素(Data Element):數(shù)據(jù)集合中的一個(gè)“個(gè)體”,是數(shù)據(jù)結(jié)構(gòu)中討論的基本單位。

        • 數(shù)據(jù)項(xiàng)(Data Item):是數(shù)據(jù)結(jié)構(gòu)中討論的最小單位,數(shù)據(jù)元素是數(shù)據(jù)項(xiàng)的集合。

        • 數(shù)據(jù)對(duì)象(Data Object):具有相同性質(zhì)的數(shù)據(jù)元素的集合。

        1. 邏輯結(jié)構(gòu)

        邏輯結(jié)構(gòu)是指數(shù)據(jù)元素之間客觀存在的關(guān)系,和數(shù)據(jù)在計(jì)算機(jī)中怎么存儲(chǔ)無(wú)關(guān),主要用于人們理解和交流以及指導(dǎo)算法的設(shè)計(jì)。邏輯結(jié)構(gòu)分為四類:

        • 線性結(jié)構(gòu):數(shù)據(jù)元素之間存在一對(duì)一的關(guān)系

        • 樹形結(jié)構(gòu):數(shù)據(jù)元素之間存在一對(duì)多的關(guān)系

        • 圖形結(jié)構(gòu):數(shù)據(jù)元素之間存在多對(duì)多的關(guān)系

        • 集合結(jié)構(gòu):數(shù)據(jù)元素屬于同一個(gè)集合

        8672e39a625f20a4eb0df04901a1f569.webp

        學(xué)習(xí)研究了這四種邏輯關(guān)系是如何存儲(chǔ)與操作后,以后我們要解決任何問(wèn)題,只要分析出我們要解決問(wèn)題的數(shù)據(jù)關(guān)系,都可以通過(guò)這四種邏輯關(guān)系來(lái)思考,如果關(guān)系比較復(fù)雜,也是由這四種關(guān)系組成的,只要一層一層地分析就可以了。

        2. 存儲(chǔ)結(jié)構(gòu)

        邏輯結(jié)構(gòu)主要用于算法設(shè)計(jì),而存儲(chǔ)結(jié)構(gòu)用于指導(dǎo)算法編程實(shí)現(xiàn)。存儲(chǔ)結(jié)構(gòu)有基本的兩種結(jié)構(gòu):

        • 順序存儲(chǔ):邏輯上相鄰的元素存儲(chǔ)在物理位置相鄰的存儲(chǔ)單元中

        • 鏈?zhǔn)酱鎯?chǔ):在數(shù)據(jù)元素中添加一些地址域或輔助結(jié)構(gòu),用于存放數(shù)據(jù)元素之間的關(guān)系

        33b9748f3ae018098e16d2393b16d6a7.webp

        順序存儲(chǔ)結(jié)構(gòu)在內(nèi)存中的地址是連續(xù)的,所以存取速度很快,但是在插入或刪除操作效率低。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)在內(nèi)存中地址可以是不連續(xù)的,插入和刪除操作效率高,但查找和遍歷效率低。同樣的邏輯結(jié)構(gòu)(線性、樹形、圖形、集合)既可以采用順序存儲(chǔ)結(jié)構(gòu)也可以采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù)和關(guān)系。存儲(chǔ)結(jié)構(gòu)的選擇主要考慮算法的效率,算法的時(shí)間和空間哪個(gè)更好,具體選擇哪種和需求有關(guān),基本存儲(chǔ)結(jié)構(gòu)既可以單獨(dú)使用,也可以組合使用。

        d0471b2a0d36d3fc48e93a3f4e5e72cc.webp

        3. 運(yùn)算操作

        數(shù)據(jù)結(jié)構(gòu)中的操作主要是指數(shù)據(jù)元素的查找、插入、刪除、遍歷和排序等等。

        二、算法

        算法用來(lái)設(shè)計(jì)并實(shí)現(xiàn)一種用計(jì)算機(jī)來(lái)解決問(wèn)題的方法。它滿足下列性質(zhì):

        • 輸入:有零個(gè)或多個(gè)輸入量

        • 輸出:產(chǎn)生至少一個(gè)輸出量

        • 確定性:算法的指令清晰、無(wú)歧義

        • 有限性:算法的指令執(zhí)行次數(shù)有限,執(zhí)行時(shí)間有限

        7d7005fe61901efb035909f30cc4b1d9.webp

        我們?cè)谑褂糜?jì)算機(jī)解決生產(chǎn)問(wèn)題的過(guò)程可以分為下面五個(gè)步驟:

        1. 問(wèn)題的理解:搞清楚問(wèn)題的輸入、要求和輸出。

        2. 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):設(shè)計(jì)能處理問(wèn)題中數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),還要設(shè)計(jì)能支持算法策略的數(shù)據(jù)結(jié)構(gòu)。

        3. 算法設(shè)計(jì):選擇算法策略,用適當(dāng)?shù)姆绞矫枋龊椭鸩郊?xì)化算法步驟。

        4. 算法分析:發(fā)現(xiàn)有優(yōu)化的地方,返回第二步,重新設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法

        5. 程序?qū)崿F(xiàn):用計(jì)算機(jī)編程,定義數(shù)據(jù)結(jié)構(gòu),編寫代碼實(shí)現(xiàn),并調(diào)試和運(yùn)行。

        9f6e05641fb61005157fa9580b222034.webp

        一個(gè)需求問(wèn)題有多種解決方案,我們經(jīng)常需要通過(guò)不斷嘗試和積累經(jīng)驗(yàn)才能找到最好的方案,如果我們熟練掌握了基本的數(shù)據(jù)結(jié)構(gòu)和算法,對(duì)于在設(shè)計(jì)高效算法中是有很大幫助的,能更高效地解決需求問(wèn)題。

        736daf4ce40a04c2fe5004d3efde7876.webp

        碼匠

        微信ID: CodeArtist

        1. 點(diǎn)擊公眾號(hào)菜單,查看更多內(nèi)容

        2. 長(zhǎng)按右側(cè)二維碼,關(guān)注碼匠公眾號(hào)

        瀏覽 103
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            色秘 乱码一区二区三区88 | 电家庭影院午夜29332 | 欧美第一网站 | 中文字幕日韩av 男人操女人视频在线观看 淫荡网站 | 怡春院欧美 | 男人插女人图片 | 色婷婷精品久久二区二区蜜桃 | 亚洲人人 | 欧美日韩啪啪啪 | 欧美干逼|