现在的位置: 首页 > 综合 > 正文

堆排序

2018年02月22日 ⁄ 综合 ⁄ 共 438字 ⁄ 字号 评论关闭
#include<stdio.h>
int dui[1000],n;
void xchg(int &a,int &b)
{
	int t;
	t=a;a=b;b=t;
}
void duisort(int k)
{
	if(k*2+1>n){
	    if(k*2<=n&&dui[k*2]<dui[k])
			xchg(dui[k*2],dui[k]);
		return ;
	}
	duisort(k*2);  
	duisort(k*2+1);
	if(dui[k*2]<dui[k])
		xchg(dui[k*2],dui[k]);
	if(dui[k*2+1]<dui[k])
		xchg(dui[k*2+1],dui[k]);
}
int main()
{
	while(scanf("%d",&n)>0)
	{
		for(int i=1;i<=n;i++)
			scanf("%d",&dui[i]);
		while(n)
		{
			duisort(1); 
			printf("%d",dui[1]);
			dui[1]=dui[n]; n--;
			if(n)printf(" ");
		}
		printf("\n");
	}
}

抱歉!评论已关闭.