发个堆排序的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; }