順序表是將資料元素放到一塊開闢的連續儲存空間,相鄰元素的邏輯位址也相鄰(邏輯與物理統一)
在上面的中可以看到順序表是在堆中是一塊連續的記憶體空間優點:1.空間利用率高(連續存放,命中率高)
2.查詢可以通過索引直接查詢,非常便利(隨機訪問)
缺點:1.插入和刪除比較慢,每次插入都需要遍歷元素來找到適當的位置進行插入和刪除,
2.插入時需要判斷是否需要擴容,擴容時會有額外的空間需求
3.儲存的元素過多時要進行擴容,儲存的元素過少時會造成額外的空間浪費,例如你的array.length=100,但是實際有效元素size=5,只有5個,剩下的空間無法利用起來,會造成空間浪費
鍊錶是程式執行過程中動態的空間分配,只要儲存器記憶體夠用,就不會出現空間溢位的現象,相鄰資料元素可隨意存放
優點:1.插入和刪除元素比較快,只需要改變相應元素的next域的指向
2.沒有空間限制,存放元素比較自由,只要儲存器有空間,就不會出現溢位問題,不用考慮擴容問題
缺點:1.不能隨機訪問,查詢時需要從頭遍歷鍊錶查詢某個元素
2.需要占用額外的空間去儲存next域。
在使用時如何去選擇使用順序表還是鍊錶?
我們可以結合兩者各自的優缺點去選擇是使用鍊錶還是順序表
使用順序表的一般情況:
1.需要頻繁的去查詢訪問元素
2.事先知道順序表的長度,並且需要不斷的去查詢或者訪問元素,可以使用順序表
使用鍊錶的一般情況:
1.需要頻繁的去進行增加和刪除操作,對於鍊錶來說進行這樣的操作開銷很小,這個時候可以選擇鍊錶
2.當不知道儲存資料是多少時,為了防止不斷的擴容和空間浪費,此時也可以選擇鍊錶。
順序表和煉表的優缺點
一 順序表 優點 順序表的記憶體空間連續。尾插 尾刪效率較高,時間複雜度是o 1 支援隨機訪問,可以高效的按下標進行操作,時間複雜度是o 1 缺點 在順序表中間插入或刪除元素時都涉及到元素的移動,效率較低,時間複雜度為o n 順序表長度固定,有時需要擴容。二 鍊錶 優點鍊錶的記憶體空間不連續。如果知...
順序表和煉表的優缺點比較
優點 1 結構簡單,易於理解 2 儲存空間連續,方便隨機訪問表中的每個元素,時間複雜度為o 1 3 不需要再為表示節點間的邏輯關係而增加額外的儲存空間 4 尾插,尾刪效率高,時間複雜度為o 1 5 cpu快取利用率高 缺點 1 插入和刪除比較慢,時間複雜度為o n 2 長度固定,必須在分配記憶體之前...
陣列和鍊錶的優缺點
array與list,使指資料結構概念上的陣列與鍊錶的優缺點吧.如果指的是array類 或介面 與list介面的優缺點的話,就不好理解了.陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原?吹哪詿婧拖亂桓黿詰愕男畔?單向的乙個,雙向鍊錶的話,會有兩個 陣列優於鍊...