地方政府公務人員四等-資訊處理類科計算機概要110 年第 34 題單選題
動態記憶體配置(dynamic memory allocation)的演算法有很多種,如果系統不對可用記憶區塊的鏈接串列(linked list)依區塊大小進行排序,那麼採用下列那一種演算法可以讓系統花在記憶區塊分配(memory allocation)的時間較少?
A最佳適合(best-fit)
B最先適合(first-fit)正確答案
C最差適合(worst-fit)
D隨機適合(random-fit)
B正確答案
未排序的鏈結串列中,first-fit 找到第一個夠大的區塊就配置,平均掃描時間最短。
為什麼答案是 B
first-fit 從頭掃描,遇到第一個夠大的區塊就立即配置,平均只需掃描部分串列,分配時間最短,是本題正解。
載入中…
完整詳解
Pro · 無限重點 未排序的鏈結串列中,first-fit 找到第一個夠大的區塊就配置,平均掃描時間最短。
關鍵字「未排序」+「花時間最少」=first-fit,找到就停不用掃完整串列。
逐選項分析
A✕ 陷阱
best-fit 要找「最接近需求大小」的區塊,未排序時必須掃完整個串列才能確定最小適配者,耗時最久。
B✓ 正確
first-fit 從頭掃描,遇到第一個夠大的區塊就立即配置,平均只需掃描部分串列,分配時間最短,是本題正解。
C✕
worst-fit 要找「最大的區塊」來切割,未排序時同樣必須掃完整串列比較所有區塊大小,時間成本高。
D✕
random-fit 隨機挑選區塊還要驗證是否夠大,可能多次嘗試失敗,且非主流演算法,效能不穩定。
動態記憶體配置演算法比較
| 演算法 | 策略 | 分配速度 | 記憶體利用率 |
|---|
| first-fit | 找到第一個夠大就配 | 最快(找到即停) | 中等 |
| best-fit | 找最小的夠大區塊 | 慢(需掃完) | 較高但產生小碎片 |
| worst-fit | 找最大區塊切割 | 慢(需掃完) | 較差 |
| next-fit | 從上次位置繼續找 | 快 | 中等 |
考生常誤以為 best-fit「最佳」就是最好,但「最佳」是指空間利用率而非速度。題目問的是「分配時間少」,且強調「未排序」,此時只有 first-fit 可以中途停止掃描,其他策略都必須走完整個串列。