11.陣列(Array)中的元素在記憶體中是連續排列的。
(A)O
(B)X

答案:登入後查看
統計: A(17), B(1), C(0), D(0), E(0) #3678227

詳解 (共 1 筆)

#7213497

【解題思路】

抓題目關鍵字:
「陣列 Array」「元素」「記憶體」「連續排列」。

這題考的是 Array 與 Linked List 的根本差異

陣列的定義之一就是:
所有元素存放在連續的記憶體區塊中(contiguous memory)。

這就是為什麼:

  1. 陣列能用索引直接 O(1) 取值

  2. 插入刪除卻慢(要移動大量元素)

如果陣列不是連續記憶體,那它就不是 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