陣列(Array)
陣列(Array)
介紹
數據排成一列,儲存在連續的記憶體位置,在大多數的演算法中都經常會使用到,可以把它想像成停車場,每一輛車就是資料,停車格的號碼就是在陣列中的位置。
以下為陣列特性:
- 連續的記憶體位置
- 儲存相同類型的資料
- 擁有緩存局部性,能夠提高性能
- 隨機訪問速度快
- 插入刪除花費成本較大

(圖片來自於geeksforgeeks)
在陣列當中就包含元素和索引,如下圖所示
- 元素
Element- 在陣列當中的每一個位置的項目。 - 索引
Index- 陣列中元素的每個內存位置都由數字索引標識。

陣列 vs. 鏈結串列
| 存取 | 插入 | 刪除 | |
|---|---|---|---|
陣列Array |
快 | 慢 | 慢 |
鏈結串列Linked list |
慢 | 快 | 快 |
複雜度
時間複雜度
| Action動作 | 平均 | 最壞 |
|---|---|---|
訪問(Access) |
$O(1)$ | $O(1)$ |
搜尋(Search) |
$O(n)$ | $O(n)$ |
插入(Insertion) |
$O(n)$ | $O(n)$ |
刪除(Deletion) |
$O(n)$ | $O(n)$ |
空間複雜度
$O(n)$
基本操作
以下為陣列常見操作
- 遍歷: 依次遍歷所有陣列元素。
- 搜索: 使用給定索引或按值搜索元素。
- 插入: 在給定位置添加一個元素。
- 刪除: 刪除給定位置的元素。
- 更新: 更新給定索引處的元素。
- 排序: 按特定順序排列陣列中的元素。
- 合併: 將兩個陣列合併為一個。
- 反轉: 將陣列順序顛倒
遍歷
走訪陣列內每個元素
let array = [1,2,5,3,4,8] |
搜尋
給定索引或按值搜索元素
let array = [1,2,5,3,4,8] |
插入
將新的元素插入陣列
let array = [1,2,5,3,4,8] |
刪除
陣列內刪除特定位置的元素
let array = [1, 2, 6, 5, 3, 4, 8] |
更新
更新給定位置的元素
let array = [1, 2, 5, 3, 4, 8] |
排序
排序陣列
let array = [1, 2, 7, 3, 4, 8] |
合併
將A陣列與B陣列組合
let array = [1, 2, 3, 4, 7, 8] |
反轉陣列
將陣列內順序顛倒
let array = [1, 2, 3, 4, 7, 8, 9, 10] |
補充
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Joeの小屋!
評論
ValineDisqus



