您的位置:首页 > 其它

堆排序算法

2011-03-16 09:15 155 查看
#include <stdio.h>
typedef struct
{
int key;
}RecType;
void shift(RecType R[],int s,int m)
{
int i=s,k;
R[0]=R[i];
int j=2*i;
for(j;j<=m;j=j*2)
{
if(j<m&&R[j].key<R[j+1].key)j++;
if(R[0].key<R[j].key)
{
R[i]=R[j];
i=j;
}
else break;
}
R[i]=R[0];
}
void HeapSort(RecType R[],int n)
{
int i;
i=n/2;
for(i;i>0;i--)
shift(R,i,n);
i=n;
for(i;i>1;i--)
{
RecType s;
s=R[1];
R[1]=R[i];
R[i]=s;
shift(R,1,i-1);
}
}
void main(void)
{
printf("通过堆排序算法前的序列:/n");
RecType R[9]={0,51,33,62,96,87,17,28,55};
for(int i=1;i<9;i++)
{
printf("%d ",R[i].key);
}
printf("/n通过堆排序算法后的序列:/n");
HeapSort(R,8);
for(int i=1;i<9;i++)
{
printf("%d ",R[i].key);
}
printf("/n");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: