发个堆排序的C语言源代码,方便大家使用、学习
程序代码:#include<stdio.h>
int main()
{
void heapsort(int [],int ,int );
int m[1000];
int i,k;
scanf("%d",&k);
for(i=1;i<=k;i++) scanf("%d",&m[i]);
heapsort(m,1,k);
for(i=k;i>=1;i--) printf("%d ",m[i]);
getch();
}
void heapadjust(int n[],int s,int m)
{
int rc=n[s];
int j;
for(j=2*s;j<=m;j*=2){
if(j<m&&n[j]>n[j+1]) j++;
if(n[j]>rc) break;
n[s]=n[j];
s=j;
}
n[s]=rc;
return;
}
void heapsort(int n[],int s,int u)
{
int i;
void change(int [],int ,int );
for(i=u/2;i>=s;--i)
heapadjust(n,i,u);
for(i=u;i>s;--i){
change(n,i,s);
heapadjust(n,s,i-1);
}
return;
}
void change(int m[],int h,int j)
{
int k;
k=m[h];
m[h]=m[j];
m[j]=k;
return;
}








