11.陣列(Array)中的元素在記憶體中是連續排列的。
(A)O
(B)X
答案:登入後查看
統計: A(17), B(1), C(0), D(0), E(0) #3678227
統計: A(17), B(1), C(0), D(0), E(0) #3678227
詳解 (共 1 筆)
#7213497
【解題思路】
抓題目關鍵字:
「陣列 Array」「元素」「記憶體」「連續排列」。
這題考的是 Array 與 Linked List 的根本差異。
陣列的定義之一就是:
所有元素存放在連續的記憶體區塊中(contiguous memory)。
這就是為什麼:
-
陣列能用索引直接 O(1) 取值
-
插入刪除卻慢(要移動大量元素)
如果陣列不是連續記憶體,那它就不是 Array,而是 List 或 Linked List 的概念。
因此題目敘述正確。
【為什麼其他選項不正確】
(A) O:正確
因為 Array 的結構就是一塊連續的記憶體。
(B) X:錯誤
如果選 X,就代表你否定 Array 的基本特性,不符合資料結構定義。
【延伸知識】
陣列之所以快速,是因為:
假設 array 的起始位址是 base,
每個元素大小是 s,
要存取第 k 個元素(從 0 開始):
memory address = base + k × s
這樣的位址計算方式只有在「連續記憶體」才做得到。
相比之下,Singly Linked List 需要指標逐節點走訪,所以存取時間是 O(n)。
【記憶技巧】
口訣:
「陣列一條龍,記憶體連通。」
「陣列連連排,索引秒到位。」
【常見錯誤】
學生容易把動態陣列(如 C++ vector)搞混。
動態陣列雖然會自動擴大容量,但它每次擴充都會重新配置一塊更大的「連續記憶體」,然後把原本的資料搬過去。
因此它本質上依然是連續記憶體。
0
0