极简堆排
void siftDown(vector& a, int i, int n) {
int l=i*2, r=i*2+1, m=i;
if(la[m]) m=l;
if(ra[m]) m=r;
if(m!=i) swap(a[i],a[m]), siftDown(a,m,n);
}
vector sortArray(vector& nums) {
int n=nums.size();
for(int i=n-1;i>=0;i--) siftDown(nums,i,n);
for(int i=n-1;i>=0;i--) swap(nums[0],nums[i]), siftDown(nums,0,i);
return nums;
}