您的位置:首页 > 其它

堆排序 HeapSort

2016-02-20 20:47 369 查看
堆排序

#include<iostream>
using namespace std;

void HeapAdjust(int H[],int s,int m)
{
int rc=H[s];
for(int j=2*s;j<m;j*=2)
{
if(j<m&&H[j]<H[j+1])	j++;
if(rc>H[j])		break;
H[s]=H[j];	s=j;
}
H[s]=rc;
}

void HeapSort(int H[],int H_length)
{

for(int i=H_length/2;i>0;i--)
HeapAdjust(H,i,H_length);
for(int i=H_length,temp;i>1;--i)
{
temp=H[1];
H[1]=H[i];
H[i]=temp;
HeapAdjust(H,1,i-1);
}
}

int main()
{
int H[100]={0},n,i=1;
int H_length=0;
cout<<"请输入需要排序的数,并以0作为结束"<<endl;
while(cin>>n)
{
if(n==0)	break;
H[i]=n;
i++;
}
H_length=i-1;
HeapSort(H,H_length);
for(i=1;i<=H_length;i++)
{
cout<<H[i]<<" ";
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: