int Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Heap_build(int a[],int root,int length)
{
int lchild=root*2+1;
if(lchild<length)
{
int flag=lchild;
int rchild=lchild+1;
if(rchild<length)
{
if(a[rchild]>a[flag])
{
flag=rchild;
}
}
if(a[root]<a[flag])
{
Swap(a[root],a[flag]);
Heap_build(a,flag,length);
}
}
}
void Heap_sort(int a[],int len)
{
for(int i=len/2-1,i>=0;i--)//从最后一个非叶子节点的父节点开始建堆
{
Heap_build(a,i,len);
}
for(int j=len-1;j>0;j--)
{
Swap(a[0],a[j]);
Heap_build(a,0,j);
}
}
CPP 实现堆排序
最新推荐文章于 2023-08-24 15:13:32 发布