标签:using 堆排 pac swa 堆排序 cpp main upd reg
//建堆
#include <cstdio> #include <iostream> using namespace std; int n,a[110]; void update(int o){ int l=o<<1,r=o<<1|1,maxn; if(l<=n && a[l]>a[o])maxn=l; else maxn=o; if(r<=n && a[r]>a[maxn])maxn=r; if(maxn!=o){ swap(a[o],a[maxn]); update(maxn); } } void init(){ for(register int i=n/2;i;i--)update(i); } int main(){ scanf("%d",&n); for(register int i=1;i<=n;i++)scanf("%d",&a[i]); init(); for(register int i=1;i<=n;i++)printf("%d ",a[i]); return 0; }
标签:using 堆排 pac swa 堆排序 cpp main upd reg
原文地址:http://www.cnblogs.com/codetogether/p/7755023.html