#include<iostream>
using namespace std;
void SiftHeap(int r[], int i, int n) {//搞成大根堆
int temp;
int largest = i;
int lson = 2 * i + 1;
int rson = 2 * i + 2;
if (lson < n && r[largest] < r[lson])
largest = lson;
if (rson < n && r[largest] < r[rson])
largest = rson;
if (largest != i) {
temp = r[largest];
r[largest] = r[i];
r[i] = temp;
SiftHeap(r, largest, n);
}
}
void HeapSort(int r[], int n)
{
int i, temp;
for(i=(n-1)/2;i>=0;i--)
SiftHeap(r, i, n);
for(i=1;i<=n-1;i++)
{
temp = r[0];
r[0] = r[n - i];
r[n - i] = temp;
SiftHeap(r, 0, n- i);
}
}
int main() {
int r[6] = {28,35,20,32,18,12 };
HeapSort(r,6);
for (int i = 0; i < 6; i++) {
cout << r[i] << " ";
}
return 0;
}