您的位置:首页 > 其它

排序算法之堆排序

2010-02-10 20:18 134 查看
//HeapSort 堆排序
void Sift(int A[],int low,int high)
{
	int i=low,j=2*i;
	int temp=A[i];
	while(j<=high)
	{
		if(j<high && A[j]<A[j+1])
			j++;
		if(temp<A[j])
		{
			A[i]=A[j];
			i=j;
			j=2*i;
		}
		else
			break;
	}
	A[i]=temp;
}
void HeapSort(int A[], int n)
{
	int i,temp;
	for(i=n/2;i>0;i--)
		Sift(A,i,n);
	for(i=n;i>1;i--)
	{
		temp=A[1];
		A[1]=A[i];
		A[i]=temp;
		Sift(A,1,i-1);
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: