#include<iostream>
#include<cstring>
using namespace std;
#define max 200
int a[max];
void adjustheap(int n)
{
if(n==1)
return ;
int i,j,k,m,t;
i=n-1;
while(i>0)///start为根节点
{
if(i%2==0)
{
j=i/2-1;
}
else
j=i/2;
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
i--;
}
cout<<a[0]<<endl;
/*for(i=0; i<n-1; i++)
a[i]=a[i+1];*/
t=a[n-1];
a[n-1]=a[0];
a[0]=t;
/* for(i=0; i<n-1; i++)
cout<<a[i]<<" ";
cout<<endl;*/
adjustheap(n-1);
}
int main()
{
int i,j,k,m,n,t;
while(cin>>n)
{
memset(a,0,max);
for(i=0; i<n; i++)
cin>>a[i];
cout<<"result:"<<endl;
adjustheap(n);
// cout<<"result:"<<endl;
/*for(i=0; i<n; i++)
cout<<a[i]<<" ";*/
}
}
堆排序
最新推荐文章于 2023-09-21 13:21:58 发布