快排,但是60分,#3#4TLE

P1177 【模板】排序

@[littlejohn](/user/1159387) 你没随机化
by Iwara @ 2024-02-23 08:56:16


@[Iwara](/user/252549) 不是随便选的基准数吗
by littlejohn @ 2024-02-23 08:59:34


@[littlejohn](/user/1159387) 是随机,不是随便
by Iwara @ 2024-02-23 09:00:21


@[Iwara](/user/252549) 哦哦
by littlejohn @ 2024-02-23 09:01:28


```cpp #include<bits/stdc++.h> using namespace std; typedef long long ll; const ll MAXN=1e5+5; ll n; ll a[MAXN],b[MAXN],pos,mid1,mid2; void sort(ll l,ll r){ if(l>=r)return; ll p=l+rand()%(r-l+1); // cout<<a[p]<<endl; pos=l; for(int i=l;i<=r;i++)if(a[i]<a[p])b[pos++]=a[i]; mid1=pos-1; for(int i=l;i<=r;i++)if(a[i]==a[p])b[pos++]=a[i]; mid2=pos; for(int i=l;i<=r;i++)if(a[i]>a[p])b[pos++]=a[i]; for(int i=l;i<=r;i++)a[i]=b[i]; // for(int i=1;i<=n;i++)cout<<a[i]<<" "; // cout<<endl; sort(l,mid1),sort(mid2,r); return; } int main(){ srand(time(NULL)); cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(1,n); for(int i=1;i<=n;i++)cout<<a[i]<<" "; return 0; } ``` 可以参考一下我写的
by Iwara @ 2024-02-23 09:01:44


原来是这样,我也是34tle,基数一直固定的第一个,怪不得。感谢感谢
by A1000062 @ 2024-02-25 10:49:06


|