题目大意:
输入n个数,要求用堆排序输出从小到大排完序后的结果。
解题思路:
一开始用up(上移)建堆,然后输出根节点,然后赋值一个足以让它下移到最后的值,然后不管它,直到节点数=0
#include#define INF 21474836480using namespace std;long long n,a[500001],x,y,sum,m,p;void up(int x)//上移操作{ while(x>1&&a[x] a[y+1]&&y 0) { printf("%d\n",a[1]);//每次输出根节点 a[1]=a[n]; n--; down(1);//down就是下移操作,把根节点下移到最后 //然后n-1就是不管这个已经输出了的根节点 } return 0;}