資料結構與演算法

(姓名, 分數)的資料 (A, 80)、(B, 70)、(C, 80)、(D, 70) 依此順序排列。以穩定排序依分數升冪重新排列時,姓名的順序為下列何者?

  1. AB, D, A, C
  2. BD, B, A, C
  3. CB, D, C, A
查看答案與解析

正確答案:A. B, D, A, C

在穩定排序中,鍵(這裡是分數)相同的元素之間,會維持排序前的順序。70分的 B 與 D 依原順序為 B、D,80分的 A 與 C 依原順序為 A、C,因此結果為 B, D, A, C。穩定的排序有泡沫排序、插入排序、合併排序,而選擇排序、快速排序、堆積排序一般不穩定。使用穩定排序,就能做到先依姓名排序、再依分數重新排序這類以多個鍵進行的排序。

  • A. 正確。分數相同者之間維持原順序(B→D、A→C)。
  • B. 70分的 B 與 D 的順序與原本相反。
  • C. 80分的 A 與 C 的順序與原本相反。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 快速排序的時間複雜度變成 O(n²) 的典型情況為下列何者?
  2. 在合併排序中,把已依升冪排序的兩個序列 1, 4, 7, 9 與 2, 3, 8, 10,以「比較兩者開頭並輸出較小者」的方式反覆進行,合併成一個序列。其中一個序列變空時,其餘部分不比較直接輸出。比較次數為幾次?
  3. 將二元堆積以根為 a[0] 的陣列 a[0], a[1], a[2], … 存放,從上層開始每層由左往右依序填入。a[4] 的子節點與父節點為下列何者?
  4. 以根為 a[0] 的陣列表示父節點值大於或等於子節點值的最大堆積。對堆積 50, 30, 40, 10, 20, 35 加入45:先放在末尾,只要比父節點大就與父節點交換。操作後的陣列為下列何者?
  5. 以中序走訪(依左子樹、該節點、右子樹的順序拜訪)走訪二元搜尋樹時,拜訪到的節點值會如何排列?假設所有值都不相同。