40分TLE求助
查看原帖
40分TLE求助
342868
qfpjm楼主2021/11/18 14:05
#include <bits/stdc++.h>

using namespace std;

int n,a[100005];

inline void random_(){
    for (int i=1;i<=n;i++) swap(a[i],a[i+rand()%(n-i+1)]);
}

inline bool check(){
    for (int i=2;i<=n;i++) 
   		if (a[i]<a[i-1]) 
        return false;
    return true;
}

inline void bogo_sort(){
    while (!check())
    random_();
}
void ssort(int i,int j){
       if (a[j]<a[i]) 
       	swap(a[j],a[i]);
       if (j-i+1>=3){
           int t=(j-i+1)/3;
           ssort(i,j-t);
           ssort(i+t,j);
           ssort(i,j-t);
       }
}
int main(){
    scanf("%d",&n);
    srand(time(NULL));
    for (int i=1;i<=n;i++) 
    	scanf("%d",&a[i]);
    if (n == 1000)
    {
    	ssort(1,n);
	}
	else
	{
		bogo_sort();
	}
   for (int i=1;i<=n;i++) 
    	printf("%d ",a[i]);
    return 0;
}
2021/11/18 14:05
加载中...