民國112年 普通考試 電子工程 計算機概要
第19題
下列由C 語言程式撰寫的函數sort 實作了何種排序法?void sort (int a[], int l, int h) {if (l >= h) retur…
題目
下列由C 語言程式撰寫的函數sort 實作了何種排序法?void sort (int a[], int l, int h) {if (l >= h) return;int j, i, key;i=l; j=h; key=a[i];while (i < j) {while (i < j&&a[j] > key) j--;if (i < j) a[i++] = a[j];while (i < j&&a[i]< key) i++;if (i < j) a[j--] = a[i];}a[i] = key;if (l < i-1)sort (a, l, i-1);if (i+1 < h)sort (a, i+1, h);} A. 快速排序(Quick sort) B. 插入排序(Insertion sort) D. 選擇排序(Selection sort) C. 合併排序(Merge sort)
官方答案
- 答案:A. 快速排序(Quick sort)
解析
該函數選取 a[l] 為基準(pivot,key),以 i、j 從兩端向中間掃描,將大於 key 者移到左、小於 key 者移到右,再將 key 放至正確位置,並遞迴處理左(l,i−1)與右(i+1,h)子陣列,符合快速排序(Quick sort)的分區(partition)與遞迴精神。其平均時間複雜度 O(n log n),最壞 O(n²)。其餘排序法不採此樞紐分割策略,故選 A。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。
官方資料
答案以考選部公告之測驗式試題標準答案 PDF 為準。