您的位置:首页 > 其它

堆排序

2010-06-28 23:15 127 查看
#include <stdio.h>
void heapadjust(int arr[],int s,int m)
{
int rc = arr[s],j;
for(j=s*2;j<=m;j=j*2)
{
if(j<m&&arr[j]<arr[j+1])j++;
if(rc>=arr[j])break;
arr[s] = arr[j];
s = j;
}
arr[s] = rc;
}
void heapsort(int arr[],int n)
{
int i,t;
for(i=n/2;i>=1;i--)
heapadjust(arr,i,n);
for(i=n;i>1;i--)
{
t = arr[i];
arr[i] = arr[1];
arr[1] = t;
heapadjust(arr,1,i-1);
}
}
int main()
{
int arr[11],i;
for(i = 1;i < 11;i++)
scanf("%d",&arr[i]);
heapsort(arr,10);
for(i = 1;i < 11;i++)
printf("%d ",arr[i]);
putchar('/n');
system("pause");
return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: