#include <iostream>
#include <iomanip>
using namespace std;
void swap(int&a,int&b);
int max(int &a,int &b);
void heap(int a[],int p);
const int n =11;
void main()
{
int n;
cout<<"请输入元素个数:"<<endl;
cin>>n;
int *a = new int[n+1];
int *b = new int[n];
cout<<"请输入n个元素:";
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n+1;i>0;i--)
{
heap(a,i);
b[n+1-i]=a[1];
for(int j=1;j<i;j++)
a[j]=a[j+1];
}
for(int i=0;i<n;i++)
cout<<b[i]<<setw(4);
cout<<endl;
system("pause");
}
//堆排序
void heap(int a[],int p)
{
int heap = false;
for(int i=p/2;i>0;i--)
{
int k =i;
while(k<=p/2&!heap)
{
int j =2*k;
if(j<p)
{
if(max(a[j],a[j+1])==1)
j+=1;
}
if(a[k]<a[j])
{
swap(a[k],a[j]);
k=j;
}
else
heap=true;
}
heap =false;
}
}
void swap(int&a,int&b)
{
int c = b;
b=a;
a=c;
}
int max(int &a,int &b)
{
if(a>b)
return 0;
return 1;
#include <iomanip>
using namespace std;
void swap(int&a,int&b);
int max(int &a,int &b);
void heap(int a[],int p);
const int n =11;
void main()
{
int n;
cout<<"请输入元素个数:"<<endl;
cin>>n;
int *a = new int[n+1];
int *b = new int[n];
cout<<"请输入n个元素:";
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n+1;i>0;i--)
{
heap(a,i);
b[n+1-i]=a[1];
for(int j=1;j<i;j++)
a[j]=a[j+1];
}
for(int i=0;i<n;i++)
cout<<b[i]<<setw(4);
cout<<endl;
system("pause");
}
//堆排序
void heap(int a[],int p)
{
int heap = false;
for(int i=p/2;i>0;i--)
{
int k =i;
while(k<=p/2&!heap)
{
int j =2*k;
if(j<p)
{
if(max(a[j],a[j+1])==1)
j+=1;
}
if(a[k]<a[j])
{
swap(a[k],a[j]);
k=j;
}
else
heap=true;
}
heap =false;
}
}
void swap(int&a,int&b)
{
int c = b;
b=a;
a=c;
}
int max(int &a,int &b)
{
if(a>b)
return 0;
return 1;
}