常用數據結構小結

常用數據結構總結

數據結構 特性 備註
數組 Array 一維,多維數組;線性排列的數據 有序數組可以採用二分查找,提高效率
棧 Stack 先進後出(FILO),後進先出(LIFO) 在特定時刻只有一個數據項可以被讀取或者被刪除
隊列 Queue 先進先出(FIFO) 在特定時刻只有一個數據項可以被讀取或者被刪除
單向鏈表 從一端開始遍歷所有數據,適合單向存儲場景,例如HashMap 搜索的複雜度和無序數組差不多。但是插入和刪除節點比無序數組快,因爲鏈表不需要移動任何東西
雙向鏈表 從兩端開始遍歷所有數據 適合雙向存儲場景,例如LinkedHashMap 同單向鏈表
可以分出多個樹枝,分出來的樹枝還可以再分 既能像鏈表那樣快速的插入和刪除,又能像有序數組那樣快速查找
二叉樹 一個節點的左子節點的關鍵字值小於這個節點,右子節點的關鍵字值大於或等於這個節點;插入一個節點需要根據這個規則進行插入 同樹
紅黑樹 1.節點都有顏色;2.在插入和刪除的過程中,要遵循保持這些顏色的不同排列的規則。例如Java8的HashMap 同樹

小結:

  • 數組:適合有讀寫,無序數組搜索效率不高,有序數組可以二分法搜索。但是插入和刪除某個節點效率低
  • 鏈表:很適合有插入和刪除節點操作的場景。特別在複製時間遠大於比較時間的情形,還能解決內存使用率問題。但是搜索效率低
  • 紅黑樹:解決二叉樹不平衡問題;既有鏈表的插入和刪除的效率,又有”有序數組”查詢的效率

PS:
強類型:存儲數據元素類型必須在初始化時指定。這樣在運行時,不需要耗費額外的時間來定義數組類型,能夠大大提升運行效率

各個算法的效率,請參看這裏數據結構和算法

Reference

常用數據結構和算法操作效率的對比總結

數據結構與算法

最全的數據結構解析與歸納

發佈了153 篇原創文章 · 獲贊 20 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章