#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+5;
int a[N],n;
void QuickSort(int l,int r)
{
if(l>=r)return;
int mid = rand()%(r-l+1)+l;
swap(a[mid],a[l]);
int tmp = a[l];
int i=l,j=r;
while(i<j){
while(i<j && a[j]>=tmp)j--;
while(i<j && a[i]<=tmp)i++;
swap(a[i],a[j]);
}
swap(a[i],a[l]);
QuickSort(l,i-1);
QuickSort(i+1,r);
}
int main()
{
srand(time(0));
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
QuickSort(1,n);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
这份代码会在 P1177 的极限数据下 TLE,原因是大量相同数字导致快速排序退化,有没有优化的方法