二、試比較陣列(Array)與鏈結串列(Linked List)之差異?(25 分)
詳解 (共 3 筆)
詳解
如果有需要大量的插入和刪除就用 Linked List ,
否則使用 Array
詳解
陣列(Array)
-
存儲方式:
- 陣列是一組連續的存儲單元,每個元素都緊鄰在一起,並且大小固定。
-
訪問速度:
- 快速隨機訪問:由於陣列中的元素是連續存儲的,可以通過索引直接訪問,訪問時間為O(1)。
-
插入和刪除操作:
- 插入和刪除較慢:在陣列中間插入或刪除元素時,需要移動大量元素,時間複雜度為O(n)。
-
內存利用:
- 內存效率高:由於是連續存儲,陣列的內存利用率較高。
-
大小固定:
- 在大多數編程語言中,陣列的大小在創建後是固定的,無法動態調整。
鏈結串列(Linked List)
-
存儲方式:
- 鏈結串列由一系列節點組成,每個節點包含數據和一個指向下一個節點的指標。節點在內存中不必是連續存儲的。
-
訪問速度:
- 線性訪問:由於每個節點都包含指向下一個節點的指標,要訪問某個元素必須從頭開始逐個遍歷,訪問時間為O(n)。
-
插入和刪除操作:
- 插入和刪除較快:在鏈結串列中插入或刪除元素只需要更改指標,時間複雜度為O(1),但需要先找到插入或刪除的位置,這個操作時間為O(n)。
-
內存利用:
- 內存效率較低:由於每個節點除了存儲數據外還需要存儲指標,會消耗額外的內存。
-
大小動態:
- 鏈結串列的大小可以動態調整,節點數量可以隨著元素的插入和刪除而變化,不需要事先確定大小。
- 陣列:適合需要頻繁隨機訪問且插入和刪除操作較少的情況,具有高效的訪問速度和較高的內存利用率,但大小固定,插入和刪除操作效率較低。
- 鏈結串列:適合需要頻繁插入和刪除操作的情況,大小可以動態調整,但訪問速度較慢,內存利用效率較低。
詳解
陣列:
必須按照順序讀取,因此較好搜尋資料,但若要在其中插入或刪除資料,必須在 欲更動的位置之後方全部的資料刪除
鏈結陣列:
一個資料空間包含一個資料和指標,指標會指向某一個資料,因此為不連續,若要更動資料只要改變指標方向就好,能夠從中直接改變但也因為連續,搜尋資料時較為費時。
必須按照順序讀取,因此較好搜尋資料,但若要在其中插入或刪除資料,必須在 欲更動的位置之後方全部的資料刪除
鏈結陣列:
一個資料空間包含一個資料和指標,指標會指向某一個資料,因此為不連續,若要更動資料只要改變指標方向就好,能夠從中直接改變但也因為連續,搜尋資料時較為費時。