為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低
問:為什麼陣列查詢比連結串列要快?而插入刪除比連結串列效率低
已知:
1、資料儲存結構分為順序儲存、連結儲存、索引儲存、雜湊儲存。
2、陣列屬於順序儲存,用一段連續的記憶體位置來儲存。
3、連結串列屬於連結儲存,用一組任意的儲存單元來儲存,不要求物理上相鄰。
抽象:
1、順序儲存可以想象成吃飯排隊,每個人領的號都是按順序來的,服務員只要喊號就裡立即可以找到對應的人,新來的人都自動加到隊尾,如果有人想插隊,那麼從他插隊的位置後面所有的人都要挪動位置。
2、連結儲存可以想象成手拉手做遊戲,每個人只知道自己手拉的是誰,想要找到某個人必須從一個節點開始往一個方向按順序一個一個查,直到查到這個人,新來的人可以插到任意兩個人之間,只要原來的那兩個人把手放開,和新來的拉起手即可,不需要其他人都跟著挪動。
查詢涉及到CPU特性
處理速度由快到慢排序:
1、CPU暫存器
2、CPUL1快取
3、CPUL2快取
4、記憶體
5、硬碟
總結:
因為CPU快取會讀入一段連續的記憶體,順序儲存符合連續的記憶體,所以順序儲存可以被快取處理,而連結儲存並不是連續的,分散在堆中,所以只能記憶體去處理。
所以陣列查詢比連結串列要快。
而陣列大小固定,插入和刪除都需要移動元素,連結串列可以動態擴充,插入刪除不需要移動元素,只需要更改元素中的指標。所以連結串列的插入刪除比陣列效率高。
多說一句:查詢比陣列快,刪除插入效率又高的方式就是雜湊儲存,雜湊是什麼?雜湊的英文:hash
相關文章
- 雙向連結串列————查詢、刪除、插入結點
- 單向迴圈連結串列——查詢、刪除、插入結點
- 連結串列基礎2(超簡單)--單連結串列的插入和刪除
- 連結串列!比陣列更適合做增刪操作的資料結構陣列資料結構
- c語言單連結串列的實現,包括連結串列的建立、插入、查詢、刪除、列印、長度計算C語言
- 連結串列入門與插入連結串列
- 單向加頭連結串列的[構建、插入、刪除、查詢、輸出]
- 陣列與連結串列陣列
- 陣列和連結串列陣列
- 資料結構__連結串列_單連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構_連結串列_單向迴圈連結串列 & 雙向連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 資料結構_連結串列_雙向迴圈連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 資料結構_連結串列_單向迴圈連結串列的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 【連結串列問題】刪除單連結串列的中間節點
- 雙向迴圈連結串列————遍歷、查詢、插入結點
- 資料結構_連結串列_雙向迴圈連結串列 & 棧 的初始化、插入、刪除、修改、查詢列印(基於C語言實現)資料結構C語言
- 陣列模擬單連結串列陣列
- 可變陣列——連結串列前言陣列
- 連結串列-插入排序排序
- 線性結構 陣列與連結串列陣列
- 資料結構:單迴圈連結串列的建立插入與刪除資料結構
- 【連結串列問題】打卡3:刪除單連結串列的中間節點
- zset如何解決內部連結串列查詢效率低下
- 既然已經有陣列了,為什麼還要連結串列?JS連結串列(Linked-list)詳解陣列JS
- day3 連結串列-增刪查
- day1-陣列和連結串列陣列
- 連結串列 - 單向連結串列
- 連結串列-迴圈連結串列
- 連結串列-雙向連結串列
- 【連結串列問題】打卡2:刪除單連結串列的第 K個節點
- 雙向迴圈連結串列:(建立、插入、遍歷、求長、查詢、刪除、排序、銷燬)待測排序
- 結點插入到單連結串列中
- 連結串列4: 迴圈連結串列
- 連結串列-雙向通用連結串列
- 連結串列-單連結串列實現
- 資料結構實驗之連結串列七:單連結串列中重複元素的刪除資料結構
- 聊聊陣列與連結串列,棧與佇列陣列佇列