#include<stdio.h>
//建堆函数
void HeapAdjust(int H[],int s,int m){
int top=H[s];
for(int j=2*s;j<=m;j*=2){
if(j<m&&H[j]<H[j+1])j++;
if(top>=H[j])break;
H[s]=H[j];s=j;
}
H[s]=top;
}
void swap(int &a,int &b){
int temp=a;
a=b;
b=temp;
//堆排序
void HeapSort(int H[],int size){
for(int i=size/2;i>=0;i--)
HeapAdjust(H,i,size-1);
for(int j=size-1;j>0;j--){
//交换元素,把最大元素放到队尾
swap(H[0],H[j]);
//对剩余元素进行建堆
HeapAdjust(H,0,j-1);
int main(){
int arr[]={3,6,2,4,7,6,2,9,17};
HeapSort(arr,9);
for(int i=0;i<9;i++){
printf("%d%s",arr[i]," ");
}
int j;
scanf("%d",&j);