From 算法笔记 上机训练实战指南 P320
#include <iostream>
#include <algorithm>
using namespace std;
int level[1010],seq[1010],N,index=0;
void getlevel(int root){
if(root>N) return;
getlevel(2*root);
level[root]=seq[index++];
getlevel(2*root+1);
}
int main(){
scanf("%d",&N);
for(int i=0;i<N;i++)
scanf("%d",&seq[i]);
sort(seq,seq+N);
getlevel(1);
for(int i=1;i<N;i++)
printf("%d ",level[i]);
printf("%d",level[N]);
return 0;
}