堆的一个重要应用就是排序。思路很简单,将所有元素依次插入堆中,然后执行n次取堆顶 + 删堆顶的操作即可。
动画如下👇
#code-switcher
class MinHeap:
def __init__(self):
P4863.堆排序
题目描述
请你手写一个堆,并使用该堆实现排序。
给定一个长度为 n 的整数序列 a1,a2,…,an,你需要将这个序列按从小到大的顺序排序后输出。
你需要自己实现一个堆结构,并通过堆完成排序。
输入描述
第一行输入一个整数 n,表示序列长度。
第二行输入 n 个整数,分别表示 a1,a2,…,an。
输出描述
输出一行,共 n 个整数,表示排序后的序列。
相邻两个整数之间用一个空格分隔。
样例1
输入
5
4 1 5 2 3
输出
1 2 3 4 5
样例2
输入
8
10 -1 3 3 7 0 -5 2
输出
-5 -1 0 2 3 3 7 10
数据范围
对于所有测试数据,满足:
1≤n≤105
−109≤ai≤109