问 玄关
  • 板块灌水区
  • 楼主HangingMirror
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/20 08:11
  • 上次更新2024/10/20 10:57:54
查看原帖
问 玄关
1286983
HangingMirror楼主2024/10/20 08:11
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;
} 

这是一个奇葩的排序算法,有没有人能求时间复杂度?谢谢。

2024/10/20 08:11
加载中...