题目链接
https://pintia.cn/problem-sets/994805342720868352/problems/994805368847187968
题解
题目要求
- 给定一个序列,及用某种排序方法经过几次迭代后的结果,请指出用了什么排序方法。(升序)
- 输入
- N:正整数,不超过100,给定序列中元素的个数
- 给定序列:N个整数
- 未完全排序的序列
- 输出
- 输出是堆排序还是插入排序
- 输出该排序算法下一步迭代的结果
解题思路
插入排序特征:序列分成左右两部分,左半部分是从小到大,右半部分是原序列。据此可以检测是否是插入排序,否则是堆排序。
堆排序特征:序列分成左右两部分,左半部分是大顶堆,右半部分是从小到大。
步骤如下:
- 将序列[1,N]构建成大顶堆(最终得到升序序列)
- 将堆顶元素(值最大)与末尾元素交换
- 将序列[1,N-1]构建/调整为大顶堆(重复步骤1、2)
代码
1 | // Problem: PAT Advanced 1098 |
参考链接
https://blog.csdn.net/liuchuo/article/details/52252172
https://www.cnblogs.com/chengxiao/p/6129630.html
https://baike.baidu.com/item/%E5%A0%86%E6%8E%92%E5%BA%8F/2840151
作者:@臭咸鱼
转载请注明出处:https://www.cnblogs.com/chouxianyu/
欢迎讨论和交流!