网站域名不变网站可以从做吗,wordpress 分析,棋牌app软件开发,哈尔滨市住房和城乡建设局局网站题目
一些数#xff0c;用堆把它们从小到大排好
解题思路
每个堆的开头是最大#xff08;小#xff09;的。每次把开头读取出来#xff0c;然后把a[num]提取上来#xff0c;然后num减1在把新的a[1]降到合适的位置。
代码
#includecstdio
using namespace std…题目
一些数用堆把它们从小到大排好
解题思路
每个堆的开头是最大小的。每次把开头读取出来然后把a[num]提取上来然后num减1在把新的a[1]降到合适的位置。
代码
#includecstdio
using namespace std;
int a[200001],num,x,n;
long long s,u;
void up(int x)//调整位置之1
{int t;while (x1 a[x]a[x/2]){ta[x];a[x]a[x/2];a[x/2]t;x/2;}
}
void down(int x)//调整位置之2
{int t,y;while (x*2num a[x]a[x*2] || x*21num a[x]a[x*21]){yx*2;if (x*21num a[x*2]a[x*21]) y;ta[x];a[x]a[y];a[y]t;xy;}
}
void insert(int x)//插入
{a[num]x;up(num);}
int main()
{scanf(%d,n); for (int i1;in;i){scanf(%d,x);insert(x);}//建堆for (int i1;in;i){printf(%d\n,a[1]);a[1]a[num];num--;down(1);//排序}
}