在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

十種典型的數據結構及其特性

nlfO_thejiangme ? 來源:未知 ? 作者:李倩 ? 2018-03-19 15:54 ? 次閱讀

數據結構是軟件開發的關鍵部分,也是開發人員面試經常遇到的問題,它們通常以專用的格式進行數據組織和存儲。本文我們將會介紹十種典型的數據結構及其特性。需要注意的是,雖然一些數據結構包含了時間復雜度O,但不完全都有因為時間復雜度很多時候與你的代碼書寫有關。實際使用時,大多數的數學結構都不需要你自己實現它們,除非像C語言這樣的底層語言。雖然大多數高級語言一般都會內置這些數據結構,但如果你知道如何實現這些數據結構將會為你在開發工作中帶來巨大優勢,說不定當你嘗試編寫高性能代碼時就會派上用場。

1. 鏈表

鏈表屬于最基本的數據結構。由于許多數據結構既可以用數組也可以用鏈表來實現,所以通常會與數組進行比較,但它們各有優缺點。

鏈表通常由一組代表一個序列的節點組成。 每個節點包含存儲的任意類型實際數據以及指向序列中下一個節點的指針。特殊的,還有雙向鏈表,其中每個節點都有兩個指針,分別起到承前啟后的作用。

鏈表中最基本的操作是插入鏈表、刪除鏈表以及查詢鏈表。下表為鏈表的時間復雜度:

2. 堆棧

堆棧屬于一種基本的數據結構,你只能在堆棧的頂部插入或刪除項目。這有點像一堆書, 如果你想看堆棧中間的一本書,你必須先將它上面上面的所有書移走。

堆棧遵循后進先出,也就是說你最后放入堆棧的項目是第一個出棧的項目。

對堆棧主要有三種操作:push,即插入新內容到堆棧;pop,從堆棧中刪除一項內容;pip,顯示堆棧的內容。

堆棧時間復雜度:

3.隊列

你可以把隊列想象成一家雜貨店里排隊買單的人,隊伍中第一個人先被服務。

隊列遵循先進先出,也就是說一旦你想添加了新元素,你要想刪除它,必須先刪除它前面的的所有元素。隊列只有兩個主要操作:入隊和出隊。 入隊,就是將新的內容插入隊列后面,而出隊就是前面所有的內容。

隊列時間復雜度:

4.集合

以集合形式存儲的數據結構中不存在任何特定的順序,也不存在重復的值。除了向集合中添加新元素或者刪除元素之外,還有一些重要的集合函數可以進行兩組集合的處理。

并集,將來自兩個不同集合的所有元素結合起來作為新集合返回(不重復).

交集,給定兩個集合,此函數返回另一個集合,包含屬于兩個集合的共同部分。

差集,給定兩個集合,此函數返回另一個集合,其中各個元素屬于一個集合,但不屬于另一個集合。

子集 ,返回一個布爾值,顯示一個集合中的所有元素是否包含在不同的集合中。

5. MAP

Map是容器的一種,也屬于一種數據結構,它將數據存儲在鍵/值對中,且每個鍵是唯一的。 map有時也稱為關聯數組或字典,通常被用于快速查找數據。 Map可以進行以下操作:

在集合中增加一對

從集合中刪除一對

修改現有的一對

查找與特定鍵相關聯的值

6.哈希表

哈希表是包含鍵/值對的地圖數據結構,使用散列函數來把關鍵碼值映射到表中一個位置來訪問記錄,以加快查找的速度。散列函數通常將一個字符串作為輸入,并輸出一個數值。散列函數對相同的輸入提供相同的輸出編號。 當兩個輸入哈希得到相同的數字輸出時,稱為碰撞。

我們的目標是沒有碰撞。所以當你將一個鍵/值對輸入到一個散列表中時,這個鍵將通過散列函數映射到一個數字,用作值存儲的實際鍵。 當你嘗試再次訪問相同的密鑰時,哈希函數將處理該密鑰并返回相同的數字結果,用于查找關聯的值。 算法速度非常快,查找的時間復雜度僅為O(1)。

Hash table 時間復雜度:

7.二叉搜索樹

樹是由節點組成的數據結構,它具有以下特征:

每棵樹都有一個根節點(位于頂部)。

根節點具有零個或多個子節點。

每個子節點都有零個或多個子節點。

二叉搜索樹還具有額外的兩個特征:

每個節點最多有兩個子節點.

對于每個節點,它左邊的子節點小于當前節點,而右邊的子節點則大于當前節點。

每個節點最多有兩個子節點。

二叉搜索樹允許快速查找、添加和刪除內容。 從它的設計結構來看,每次比較后都會跳過樹的大約一半內容,因此每次查找、插入或刪除需要的操作時間與存儲在樹中的內容數量的對數成比例。

二叉樹時間復雜度:

8. 前綴樹或字典樹

前綴樹或字典樹,是一種搜索樹。 前綴樹中存儲數據的每個步驟其實就是操作一個節點,它通常被用來存儲單詞,可以進行快速查找,例如單詞自動構成功能。

語言字典樹中的每個節點都包含一個單詞的一個字母。 你可以按照樹狀結構的一條分支拼寫出一個單詞。 當字母的順序與字典中的其他單詞不同或者一個單詞完成時,開始分支。每個節點都包含一個字母(數據)和一個布爾值(用于指示該節點是否是單詞中的最后一個節點)。

看看上面的圖像,你可以構成很多單詞。從頂部的根節點開始并往下,這個字典樹包含了ball, bat, doll, do, dork, dorm, send, sense這些單詞。

9.二叉堆

二叉堆是特殊的樹數據結構。形式上看,它從頂點開始,每個節點有兩個子節點,每個子節點又各自有自己的兩個子節點;數值上看,每個節點的兩個子節點都比它大或小。

二叉堆有兩種:最大堆和最小堆。最大堆:父結點的鍵值總是大于或等于任何一個子節點的鍵值;最小堆:父結點的鍵值總是小于或等于任何一個子節點的鍵值。

在二叉堆上可以進行插入節點、刪除節點、取出值最小的節點、減小節點的值等基本操作。不同層之間的順序很重要,但同一層上節點的順序無關緊要。 如圖所示,你可以看到最小堆的第三層的值是10,6和12,這些數字并不是按照順序排列的。

二叉堆時間復雜度:

10. 圖

圖是由節點(也稱為頂點)與它們之間的連接(稱為邊)構成的集合。圖也被稱為網絡

社交網絡是典型的圖的例子,節點是人,邊代表他們互相認識的關系。

主要有兩種類型的圖:有向和無向。無向圖是指在節點之間的邊上沒有任何方向的圖。相反,有向圖表示每條邊上都有方向的圖。

表示圖的兩種常用方式是鄰接表和鄰接矩陣:

鄰接列表,表示一個列表的左側是節點,右側列出了它所連接的所有其他節點。

鄰接矩陣,則是一個數字網格。其中每個行或列表示圖中的不同節點。每一行和一列的交點是一個表示關系的數字。0表示沒有邊或沒有關系,1表示有一種關系,而大于1的數字則可表示不同的權重。

通過遍歷算法可以遍歷或訪問圖中的節點。遍歷算法的主要類型有廣度優先搜索和深度優先搜索,可以被用于確定節點與根節點的接近程度。觀看下面的視頻你可以學習到如何在JavaScript中實現廣度優先搜索。

鄰接列表的時間復雜度:

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40240
  • 鏈表
    +關注

    關注

    0

    文章

    80

    瀏覽量

    10610

原文標題:盤點 | 如何組織你的數據?這里有十種常見的數據結構解讀

文章出處:【微信號:thejiangmen,微信公眾號:將門創投】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    快速介紹8常用數據結構

    數據結構是一特殊的組織和存儲數據的方式,可以使我們可以更高效地對存儲的數據執行操作。數據結構在計算機科學和軟件工程領域具有廣泛而多樣的用途
    發表于 06-21 09:27 ?789次閱讀
    快速介紹8<b class='flag-5'>種</b>常用<b class='flag-5'>數據結構</b>

    什么是數據結構(Data Structrue)

    的一個一個元素數據對象:具有相同特性數據元素的集合結構數據元素之間具有的關系(聯系) 二. 
    發表于 02-09 17:17

    數據結構

    1.數據結構的概念 所謂數據結構是指由某一數據對象及該對象中所有數據成員之間的關系組成的集合。成員之間的關系有很多種,最常見的是前后件關系。 2.
    發表于 03-04 14:13

    請問怎么做一個跑馬燈有十種模式,第十種模式有三音樂,可加速減速和無線遙控?

    我現在想做一個跑馬燈,這個跑馬燈有十種模式,第十種模式要求有三音樂。,還得有數碼管顯示第幾種模式。可以無線遙控。求哪位大神可以幫我。小女子必有重謝。
    發表于 07-19 04:49

    十種精密全波整流電路原圖分享

    十種精密全波整流電路原圖,大家點評下
    發表于 11-27 06:47

    數據結構教程,下載

    1. 數據結構的基本概念 2. 算法與數據結構3. C語言的數據類型及其算法描述要點4. 學習算法與數據結構的意義與方法
    發表于 05-14 17:22 ?0次下載
    <b class='flag-5'>數據結構</b>教程,下載

    GPIB命令的數據結構

    針對GPIB命令的結構,提出一存儲GPIB命令的數據結構。根據GPIB命令的層次關系的特點,選擇數據結構中“樹”的概念來存儲GPIB命令結點;并考慮程序實現的效率問題以及管理維護
    發表于 02-10 16:20 ?70次下載

    GPIB命令的數據結構

    針對GPIB命令的結構,提出一存儲GPIB命令的數據結構。根據GPIB命令的層次關系的特點,選擇數據結構中“樹”的概念來存儲GPIB命令結點;并考慮程序實現的效率問題以及管理維護
    發表于 01-04 10:13 ?0次下載

    數據結構與算法

    全國C語言考試公共基礎知識點——數據結構與算法,該資料包含了有關數據結構與算法的全部知識點。
    發表于 03-30 14:27 ?0次下載

    十種典型測控電路圖全解

    十種典型的測控電路圖全解,包括數控機床的速度、位移測控系統、溫度測量與控制系統、數控機床的速度、位移測控系統等,非常全面,希望對大家有用。
    發表于 10-10 11:37 ?1.2w次閱讀
    幾<b class='flag-5'>十種</b><b class='flag-5'>典型</b>測控電路圖全解

    十種方法能保護云數據安全

    十種方法能保護云數據安全
    發表于 01-14 12:00 ?12次下載

    數據結構是什么_數據結構有什么用

    數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一或多種特定關系的數據元素的集合。通常情況下,精心選擇的
    發表于 11-17 14:45 ?1.6w次閱讀
    <b class='flag-5'>數據結構</b>是什么_<b class='flag-5'>數據結構</b>有什么用

    什么是數據結構?為什么要學習數據結構數據結構的應用實例分析

    本文檔的主要內容詳細介紹的是什么是數據結構?為什么要學習數據結構數據結構的應用實例分析包括了:數據結構在串口通信當中的應用,數據結構在按鍵
    發表于 09-26 15:45 ?14次下載
    什么是<b class='flag-5'>數據結構</b>?為什么要學習<b class='flag-5'>數據結構</b>?<b class='flag-5'>數據結構</b>的應用實例分析

    十種pandas數據編碼的方法分享

    題主表示pandas用起來很亂,事實真的如此嗎?本文就將先如何利用pandas來行數據轉換/編碼的十種方案,最后再回答這個問題。
    的頭像 發表于 05-10 15:33 ?1372次閱讀

    NetApp的數據結構是如何演變的

    混合和多云部署模型是企業IT組織的新常態。隨著這些復雜的環境,圍繞數據管理的新挑戰出現了。NetApp的數據管理愿景是一無縫連接不同的數據結構云,無論它們是私有環境、公共環境還是混合
    發表于 08-25 17:15 ?0次下載
    NetApp的<b class='flag-5'>數據結構</b>是如何演變的
    主站蜘蛛池模板: 永久免费看黄 | 一区二区三区影院 | 亚洲综合欧美日本另类激情 | 国产香蕉在线视频 | 日本aaaa级片 | 欧美性喷潮xxxx| 人人干在线观看 | 久久精品夜夜夜夜夜久久 | 男人午夜影院 | 白嫩少妇激情无码 | 综合婷婷 | 狠狠色狠狠色综合 | 天天射天天爱天天干 | 精品欧美一区二区三区在线观看 | 特级毛片免费视频播放 | 在线天堂中文官网 | 韩国黄色三级视频 | 天天干天天拍天天射 | 亚洲日本一区二区三区 | 国产一区二区三区影院 | 性色视频免费 | 人人草人人澡 | 欧美爽爽网 | 深夜福利一区 | 亚洲怡红院在线 | 国产午夜精品视频 | 精品无码三级在线观看视频 | 性生大片免费观看无遮挡 | ww欧美| 欧美经典三级春潮烂漫海棠红 | 直接看黄的网站 | 人人插人人射 | 日日干夜夜欢 | 天天色天天摸 | 亚洲一区二区三区免费在线观看 | 午夜免费小视频 | 哟交小u女国产精品视频 | 亚洲一区二区三区精品视频 | 亚洲综合色在线 | 色偷偷888欧美精品久久久 | 天天干夜夜夜 |