1089 Insert or Merge (25分) 和 1098 Insertion or Heap Sort (25分)
记原数组为 \(a\),部分排序数组为 \(s\)
Insertion sort
- \(s\) 的前面部分有序,后面的无序部分与 \(a\) 相同
Merge sort
- 对 \(a\) 进行模拟归并排序,将每一个状态与 \(s\) 比较。若 \(a=s\),则再进行一次归并排序后退出
Heap sort
-
\(s\) 的后面部分有序,前面部分是大顶堆
-
从后向前遍历,确定堆的大小。将堆顶 \(s[0]\) 与堆的末尾元素 \(s[k]\) 交换,再进行一次向下调整