《深入浅出》的快速排序算法可以被卡成 O(n^2)!
查看原帖
《深入浅出》的快速排序算法可以被卡成 O(n^2)!
658786
YuRuochen楼主2024/9/11 21:18

数据生成器:

#include<bits/stdc++.h>
using namespace std;
const int N=100005;
int n,a[N],b[N];
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++) a[i]=i;
	for(int i=1;i<=n;i++){
		b[a[i+n>>1]]=i;
		swap(a[i],a[i+n>>1]);
	}
	printf("%d\n",n);
	for(int i=1;i<=n;i++) printf("%d ",b[i]); 
	return 0;
}

类似的,不管你怎样选哨兵。只要不是随机的,被造数据者暗算了可就完了。所以,快排规则千万条,随机哨兵第一条!

注:不用 sort 是因为手写快排速度可以达到 sort 的两倍以上,可用于卡常。

2024/9/11 21:18
加载中...