第 2 章

陣列:把東西整整齊齊排好

當資料有固定順序、數量可預期,而且我們常常要依位置快速取得內容時,陣列會是一種很直觀的安排方式。

Array

預計閱讀時間:約 5 分鐘

行政管理 教育工作者

本章開場

你在超商買了 12 入的蛋盒,每一顆蛋都有固定位置。要拿第 3 顆蛋,不需要翻遍整盒,只要看位置就好。這就是陣列最直觀的感覺:資料排成一列,而且每個位置都有編號。

本章要解決的問題

當資料需要固定順序、固定位置、快速用編號取出時,怎樣的結構最省力?陣列就是解這個問題的基本方法。

核心概念

陣列可以想成一排整齊的格子,每個格子都放一筆資料。它的優點是位置明確,所以你想找第幾個元素時,通常很快。這種結構特別適合固定順序、固定格式、需要快速用索引取值的情境。

但陣列也有代價。若中間要插入新資料,後面的內容常常需要一起往後挪動;若要刪掉其中一筆,也可能需要重排。所以它適合整齊穩定的場景,不一定適合頻繁插入與調整的場景。

陣列示意圖:固定索引與插入代價 陣列:每格有固定索引,直接存取快速;但插入新元素,後方需整批位移 A [0] B [1] 插入 X [2] 新增 C [3] 後移 D [4] 後移 取 [0] → 立即 插入 → 後方全移 C 原在 [2]、D 原在 [3],插入 X 後各自往後一格——這就是陣列的插入代價
陣列示意:用索引直接取值非常快,但在中間插入新元素時,後方所有元素都需要往後移動一格

這在生活中像什麼

電影院的座位編號、每週課表的時段欄位、月份日曆的日期排列,都是很像陣列的安排方式。每個位置都有明確意義,大家會先找位置,再找內容。

如果你的待辦清單只是今天固定要做的五件事,也可以很像陣列:第一件先做什麼,第二件再做什麼,一目了然。

具體例子

  1. 蛋盒:12 格依序放著 12 顆蛋,要拿第三顆就直接數到第三格,不必翻整盒。位置即資料,這是陣列最直白的樣子。
  2. 電影院對號入座:A 排第 5 號就是 A5,買票時選位、進場時找位,位置唯一、直接對應,完全不需要逐一詢問。
  3. 週課表:每天五節、每節固定科目,要知道週三第二節上什麼,只要對照欄跟列就好,不需要翻找。
  4. 公車時刻表:08:00、08:30、09:00……每個時段固定,乘客看位置就知道下一班幾點。新增或刪除班次,後面所有時段都要跟著挪動,正是陣列插入的代價。
  5. 月曆的日期欄:31 天依序排好,任何人都能直接翻到「15 日」。若要臨時在 10 日與 11 日之間插入半天假,整張月曆就得重新繪製。

這在工作上有什麼用

每月 KPI 報表欄位、固定格式的出勤紀錄、按月份排序的營運數據,常常會以陣列式思維處理。因為欄位順序固定、位置明確,對讀取、對照與輸出都很方便。

但如果是一份需求清單,經常要插隊新增、跨組重排、移動優先順序,那陣列的使用體驗就可能開始變差,因為變動成本變高。

為什麼重要

  • 它讓固定順序的資料很好讀、好取用。
  • 它非常適合用位置編號快速存取。
  • 它提醒我們:整理得整齊有好處,但改動時可能不夠彈性。

一句話總結

陣列像一排編好號的格子,拿東西很快,但中途改位置時就沒那麼輕鬆。

💭 捲輊三問

  1. 你生活或工作中有哪個場景,是像陣列一樣「固定順序、按位置取用」的?
  2. 如果有人要在你的行程表中間插入一個臨時會議,整體安排會如何被影響?
  3. 陣列的「改動代價」讓你想到生活中哪一種管理上的限制?
下一章

有時候資料不只要整齊,還要按照「先來後到」或「最後放的最先拿」的順序處理——佇列與堆疊登場。