/*
堆排序
*/
#include <iostream>
#include <cstdio>
using namespace std;
void shift( int *a,int m,int n )
{
int i,j,x,temp;
i=m , j=2*i ;
x=a[m];
while( j<=n )
{
if( j<n && a[j]>a[j+1] ) j=j+1;
if( x<=a[j] ) break;
else
{
a[i]=a[j];
i=j;
j=2*i ;
}
}
a[i]=x;
}
void heapsort( int *a,int n )
{
int m,i,temp;
m=n/2;
for( i=m;i>=1;i-- )
shift( a,i,n );
for( i=n;i>=2;i-- )
{
temp=a[1];
a[1]=a[i];
a[i]=temp;
shift( a,1,i-1 );
}
}
int main()
{
int i;
int a[11]={0,73,56,71,2,4,34,47,46,25,12};
heapsort( a,10 );
for( i=1;i<11;i++ )
cout<<a[i]<<" ";
cout<<endl;
return 0;
}
堆排序
最新推荐文章于 2023-09-21 13:21:58 发布