108 專技高考高等考試 電子工程技師 電子計算機原理 考古題詳解

108 年・專技高考・高等考試・電子工程技師
試題代碼 電子計算機原理

第 一 題25 分

以下是一個演算法,給定一個含有 nn 個數字元素的陣列 A[1]∼A[n]A[1]\sim A[n],它會輸出其中最大的元素。(每小題 5 分,共 25 分)

Algorithm arrayMax(A,n)1currentMax←A[1]2for i←2 to n do3if A[i]≥currentMax then4currentMax←A[i]5return currentMax\begin{array}{l} \text{Algorithm arrayMax}(A,n)\\ \quad 1\quad \text{currentMax}\leftarrow A[1]\\ \quad 2\quad \text{for }i\leftarrow 2\text{ to }n\text{ do}\\ \quad 3\qquad \text{if }A[i]\geq\text{currentMax}\text{ then}\\ \quad 4\qquad\qquad \text{currentMax}\leftarrow A[i]\\ \quad 5\quad \text{return currentMax} \end{array}

(一) 此演算法若使用 C 或 C++ 程式語言來實作,請問其中「←\leftarrow」應該用什麼符號來表示?

(二) 給定一個含有 n=8n=8 個數字元素的陣列 A=⟨8,22,22,13,34,3,34,13⟩A=\langle 8,22,22,13,34,3,34,13\rangle,請問最後會輸出 currentMax\text{currentMax} 的值為何?

(三) 給定一個含有 n=8n=8 個數字元素的陣列 A=⟨8,22,22,13,34,3,34,13⟩A=\langle 8,22,22,13,34,3,34,13\rangle,請問此演算法的第 3 行指令「if A[i]≥currentMaxA[i]\geq\text{currentMax} then」總共被執行了多少次?

(四) 給定一個含有 n=8n=8 個數字元素的陣列 A=⟨8,22,22,13,34,3,34,13⟩A=\langle 8,22,22,13,34,3,34,13\rangle,請問此演算法的第 4 行指令「currentMax←A[i]\text{currentMax}\leftarrow A[i]」總共被執行了多少次?

(五) 此演算法處理一個含有 nn 個數字元素的陣列時,其執行時間 T(n)T(n) 的複雜度(time complexity)為何?

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查逐一掃描陣列以尋找最大值,以及根據迴圈次數與條件判斷次數分析時間複雜度。

演算法先將 A[1]A[1] 設為目前最大值,再依序檢查 A[2]A[2] 至 A[n]A[n]。若 A[i]≥currentMaxA[i]\geq\text{currentMax},便更新目前最大值。符號 ≥\geq 包含相等,因此遇到相同的最大值時,第 4 行也會執行。

解題方法

(一) C 或 C++ 中,賦值運算子使用 =,所以「←\leftarrow」以 = 表示。例如:

currentMax = A[1];

(二) 依序追蹤目前最大值:

iiA[i]A[i]比較結果執行後的 currentMax
初始A[1]=8A[1]=8設定初值8
22222≥822\geq8,更新22
32222≥2222\geq22,更新22
41313<2213<22,不更新22
53434≥2234\geq22,更新34
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 二 題25 分

下圖可用來表示程式執行時間 f(n)f(n) 的成長圖。其中有 n!n!、2n2^n、n2n^2、nlog⁡2nn\log_2 n、nn、log⁡2n\log_2 n 等 6 種函數。(每小題 5 分,共 25 分)

🖼️【此處有附圖,請對照原卷】

(一) 請問其中哪些函數是屬於 polynomial-time growth?

(二) 傳統的 Merge sort 在排序 nn 個資料時,其時間複雜度是這 6 種函數的哪一種?

(三) 傳統的 Quick sort 在排序 nn 個資料時,在最糟的狀況下,時間複雜度是這 6 種函數的哪一種?

(四) 傳統的 Selection sort 在排序 nn 個資料時,其時間複雜度是這 6 種函數的哪一種?

(五) 傳統的 Heap sort 在排序 nn 個資料時,其時間複雜度是這 6 種函數的哪一種?

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

多項式時間是指存在固定常數 kk,使執行時間可由 O(nk)O(n^k) 上界描述。依此定義,log⁡2n\log_2 n、nn、nlog⁡2nn\log_2 n、n2n^2 都屬於 polynomial-time growth;2n2^n 與 n!n! 則不是。

解題方法與各小題

(一)Polynomial-time growth

逐一看函數是否能以某個固定次方的 nn 作為上界:

  • log⁡2n\log_2 n:屬於多項式時間,且成長慢於 nn。
  • nn:屬於多項式時間。
  • nlog⁡2nn\log_2 n:屬於多項式時間;例如對足夠大的 nn,log⁡2n≤n\log_2 n\le n,所以 nlog⁡2n≤n2n\log_2 n\le n^2。
  • n2n^2:屬於多項式時間。
  • 2n2^n:指數成長,不屬於多項式時間。
  • n!n!:階乘成長,不屬於多項式時間。

因此,屬於 polynomial-time growth 的函數是 log⁡2n\log_2 n、nn、nlog⁡2nn\log_2 n、n2n^2。

(二)Merge sort

每次將資料分成兩半遞迴排序,再以線性時間合併,故遞迴式為

T(n)=2T(n/2)+Θ(n).T(n)=2T(n/2)+\Theta(n).

依主定理,T(n)=Θ(nlog⁡2n)T(n)=\Theta(n\log_2 n),對應圖中的 nlog⁡2nn\log_2 n。

(三)Quick sort 最糟狀況

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 三 題25 分

在電腦內部有許多工作(job)及程序(process)同時在爭用資源,因此需要安排很多 queue 來將它們做先後順序的排列。下圖顯示 Job queue、Ready queue、I/O queue 等 3 種 queue 在處理 job 及 process 的整體流程圖。(每小題 5 分,共 25 分)

🖼️【此處有附圖,請對照原卷】

(一) 請問工作(job)及程序(process)的主要差別為何?

(二) 請問圖中「Time slot exhausted」所指意思為何?

(三) 請問圖中「I/O satisfied」所指意思為何?

(四) 請問 Ready queue 儲存的內容為何?

(五) 在實作 queue 時,一般常用 FIFO queue,請問 FIFO 意義為何?

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查作業系統中的 job 與 process、多重佇列、CPU 時間片輪替及 FIFO。依圖示,工作由 Job queue 進入處理流程;已載入記憶體且可使用 CPU 的程序排入 Ready queue;需要 I/O 的程序等待 I/O 完成,完成後回到 Ready queue。

解題方法

判讀流程圖中程序移動的原因:CPU 時間片用完,程序回到 Ready queue;程序提出 I/O 要求,就進入 I/O queue;I/O 完成後,程序再回到 Ready queue。再依作業系統的定義,說明各佇列所存放的對象及 FIFO 的服務順序。

各小題詳解

(一) 工作(job)及程序(process)的主要差別

Job 是使用者提交給電腦、等待系統處理的工作單位,通常包含程式及相關資料。Process 則是程式正在執行時的實例,具有執行狀態、程式計數器、暫存器內容及所需資源等資訊。

簡言之,job 是等待處理的工作;process 是正在執行或等待執行的程序。Job 被系統接納並載入記憶體後,會進入程序管理與排程流程。

(二)「Time slot exhausted」的意思

「Time slot exhausted」表示程序獲得的 CPU 時間片(time quantum)已用完。在分時或輪轉排程中,作業系統會暫停該程序,將它放回 Ready queue,等待下一次取得 CPU。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 四 題25 分

資料結構的分類可如下圖所示。(每小題 5 分,共 25 分)

🖼️【此處有附圖,請對照原卷】

(一) 請問 Linear Data Structure 和 Non-Linear Data Structure 兩者主要的差別為何?

(二) 請問圖中 Static 和 Dynamic 兩者主要的差別為何?

(三) 請問圖中何者亦稱為 LIFO?

(四) 在實作 LinkedList 時,每個元素通常會含有兩個部分:data 和 link。請問這兩個部分各存什麼資訊?

(五) 下面顯示一個 Graph 例子。在實作 Graph 時,通常有兩種做法:adjacency matrix 及 adjacency list,請使用上面的 Graph 例子,說明這兩個做法。

🖼️【此處有附圖,請對照原卷】

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查資料結構的分類、堆疊的存取順序、鏈結串列節點的欄位,以及圖形的兩種常見表示法。依題圖,Graph 為無向圖,節點為 1,2,3,41,2,3,4,邊為 {1,2}\{1,2\}、{1,3}\{1,3\}、{1,4}\{1,4\}、{2,3}\{2,3\}、{3,4}\{3,4\};沒有自我迴圈,也沒有連接節點 22 與 44 的邊。

解題方法與各小題答案

(一) Linear Data Structure 與 Non-Linear Data Structure 的差別

線性資料結構中的元素依序排列,除首尾元素外,每個元素通常各有一個前驅和一個後繼,形成單一路徑,例如 Array、Linked List、Queue、Stack。

非線性資料結構中的元素不只依單一順序排列,一個元素可以連結多個其他元素,形成階層或網狀關係,例如 Tree 和 Graph。

判斷時看元素間的組織關係:單一序列屬於線性,多分支或網狀連結屬於非線性。

(二) Static 與 Dynamic 的差別

**Static(靜態)**資料結構的容量通常在建立時就決定,執行期間不易改變;圖中例子為 Array。

**Dynamic(動態)**資料結構可依執行需求增加或移除元素,大小可變;圖中例子包括 Linked List、Queue 和 Stack。動態結構通常透過配置與釋放記憶體調整容量。

(三) 圖中何者亦稱為 LIFO?

**Stack(堆疊)**亦稱為 LIFO(Last In, First Out,後進先出):最後放入的元素會最先取出。Queue 則是 FIFO(First In, First Out,先進先出)。

(四) LinkedList 的 data 和 link 各存什麼資訊?

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題

108 年電子工程技師的其他科目

電子工程技師《電子計算機原理》其他年度