陣列按索引查詢,效率非常高。
陣列的建立通常需要申請一段連續的記憶體空間(一整塊的記憶體),並且大小是固定的(大多數程式語言陣列都是固定的),所以當前陣列不能滿足需求時,需要擴容。一般情況下是申請乙個更大的陣列,比如2倍,然後將原來陣列中的元素複製過去。
陣列開頭或中間插入、刪除資料的成本較高,需要大量元素的位移。
陣列按內容查詢,效率非常低。
總結:當頻繁用下標訪問時選擇陣列。
鍊錶中的元素在記憶體中不必是連續的空間,可充分利用計算機的記憶體,實現靈活的記憶體動態管理。
鍊錶在建立時不必確定大小,並且大小可以無限延伸。
鍊錶在插入和刪除資料時,時間複雜度可達到o(1),相對陣列效率高很多。
無法通過下標直接訪問元素,需從頭開始訪問,直到找到對應的元素
總結:當頻繁插入和刪除資料時選擇鍊錶
雜湊表的優點
插入、查詢、刪除的效率都非常高。
雜湊表的缺點
空間利用率不高,底層使用的是陣列,並且一些單元沒有被利用
雜湊表中的元素是無序的,不能按照固定的順序來遍歷元素
不能快速的找出雜湊表中的最大值和最小值
樹結構的優點:
可以表示一對多的關係。用在某些場景會比較方便,如檔案的目錄結構。
總結
樹結構綜合了上面的資料結構的優缺點,插入、刪除、查詢速度比陣列、鍊錶快,但比雜湊表慢,但比雜湊表空間利用率高,可查詢最值
常見資料結構對比
最近看一本講程式設計藝術的書,裡面提了個問題 常見資料結構有哪些?以前都是用到什麼資料結構,去查相應資料,一直沒仔細想過這個問題,一時心血來潮,決定做個 總結下幾種資料結構的特點。如果哪位大神發現了錯誤,請通知小弟一聲,小弟馬上修改,謝謝。名稱 描述隨機訪問時間複雜度 特點優點 缺點陣列 資料型別的...
資料結構儲存的順序和鏈式對比
資料結構按邏輯結構可以分為集合 線性結構 非線性結構 按儲存結構可以劃分為順序 鏈式 索引 雜湊儲存結構。下面主要區分一下順序和鏈式儲存的優缺點,這是軟考的知識點,分析記憶一下 儲存密度 順序儲存結構是乙個乙個挨著,基本上是乙個空間對應乙個資料 而鏈式儲存由於每個結點都含有指標區域,故儲存空間占用比...
各類資料結構之間的優缺點對比
資料結構是對計算機記憶體 亦或是計算機磁碟 的資料的一種安排。資料結構包含陣列 鍊錶 二叉樹 棧 雜湊表等等。演算法是對資料結構的各種處理。例如查詢一條特殊的資料項或對資料進行排序。資料結構 優點缺點 陣列插入快,如果知道下標,可以非常快的訪問 查詢慢,刪除慢,大小固定 有序資料 比無序陣列查詢快 ...