void hmsort(int l=0,int h=n-1){
if(l>=h)return;
int wasmid = (l+h+1)/2;
hmsort(wasmid,h);
int mid=(wasmid+l)/2;
while(mid>l){
hmsort(l,mid-1);
int i=mid,j2=mid+(mid-l),j1=l;
for(;j1<mid&&j2<=h;++i){
if(a[j1]>a[j2]){
swap(a[j2],a[i]);
++j2;
}else{
swap(a[j1],a[i]);
++j1;
}
}
for(;j1<mid;++j1,++i){
swap(a[j1],a[i]);
}
mid=(mid+l)/2;
}
int tmp=a[l],i=l+1;
while(a[i]<tmp&&i<=h){
a[i-1]=a[i];
++i;
}
a[i-1]=tmp;
}
这是一个奇葩的排序算法,有没有人能求时间复杂度?谢谢。