#include <iostream>
using namespace std;
int L[]={0,50,40,60,30,70,10,90,80,20};//数组从L[1]开始
int length=sizeof(L)/sizeof(int)-1;
void Swap(int*,int,int);
void HeapAdjust(int*,int,int);
void HeapSort(int *L,int length)
{
for(int i=length/2;i>0;i--)
HeapAdjust(L,i,length);
for(int i=length;i>1;i--){
Swap(L,1,i);
HeapAdjust(L,1,i-1);
}
}
void Swap(int *L,int s,int length)
{
L[0]=L[s]; //L[0]作为一个临时变量,用于完成a[s]和a[length]的互换
L[s]=L[length];
L[length]=L[0];
}
void HeapAdjust(int *L,int s,int length)
{
L[0]=L[s];
for(int j=2*s;j<=length;j=2*j){
if(j<length && L[j]<L[j+1])
++j;
if(L[0]>L[j])
break;
L[s]=L[j];
s=j;
}
L[s]=L[0];
}
void main()
{
HeapSort(L,length);
for(int i=1;i<=length;i++)
cout<<L[i]<<" ";
system("pause");
}