c++代码:
#include<bits/stdc++.h>
using namespace std;
void heap_adjust(int a[], int s, int n){
int root=a[s];
for(int i=2*s;i<=n;i*=2){
if(i<n&&a[i]<a[i+1]) i++;
if(a[i]<a[s]) break;
a[s]=a[i];
s=i;
}
a[s]=root;
}
int main() {
freopen("F://inp.txt","r",stdin);
int n;
while(cin>>n){
int a[n+5];
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=n/2;i>0;i--)
heap_adjust(a,i,n);
for(int i=n;i>1;i--){
a[i]=a[i]^a[1];
a[1]=a[i]^a[1];
a[i]=a[i]^a[1];
for(int j=i/2;j>0;j--) heap_adjust(a,j,i-1);
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
cout<<endl;
}
return 0;
}