堆排序,顾名思义是靠堆进行排序的一种排序方法。具体实现也不难。
因为堆的特性,堆顶元素肯定是其最值,所以直接将其取出,然后想插入数据一样,将堆的最后一个数取出放到堆顶,整理堆使其重新变成一个符号条件的堆,如此重复即可。
此题为模板题,没啥可说的,代码如下:
#include <bits/stdc++.h>
using namespace std;
int n , a[100001];
void px(int x) {
int i = 1 , j = i * 2;
while (j <= x) {
if (a[j + 1