#include <stdio.h>
void print(int k[],int n);
void heap_sort(int k[],int n);
void adjust(int k[],int i,int n);
int main(){
int K[]= {49,38,97,76,65,13,27,50};
heap_sort(K,7);
print(K,8);
}
void print(int k[],int n){
for (int i=0;i<n;i++){
printf("%d\n",k[i]);
}
}
//堆排序
void heap_sort(int k[],int n){
int i;
int temp;
//建立初始堆
for(i=n/2;i>=1;i--){
adjust(k,i,n);
}
for(i=n-1;i>=1;i--){
temp = k[i+1];
k[i+1]=k[1];
k[1]=temp;
adjust(k,1,i);
}
}
void adjust(int k[],int i,int n){
int j;
int temp;
temp = k[i];
j=2*i;
while(j<=n){
if(j<n&&k[j]<k[j+1]){
j++;
}
if(temp>=k[j]){
break;
}
k[j/2]=k[j];
j=j*2;
}
k[j/2]=temp;
}