求调
查看原帖
求调
1021365
Crab_Tang楼主2024/6/8 16:57
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10; 
int n;
int nums[N];
bool cmp(int a,int b){
	return a>b;
}
template<typename _T,typename _Compare>
void myqsort(_T* l,_T* r,_Compare _Comp){
	//cerr<<l-nums<<' '<<r-nums<<endl;
//	[l,r)
	
	//printf("l:%d r:%d\n",l,r);
	if(r<=l+1)
		return ;
//	[1,6) 1 2 3 4 5 
	_T key=(*(rand()%(r-l)+l));//随机基准值
	_T* i=l,*j=r-1;
	while(i<j){
		//cerr<<i-nums<<" ppp "<<j-nums<<endl;
		while(_Comp((*i),key))++i;
		while(_Comp(key,(*j)))--j;
		if(i<j){
			swap((*i),(*j));
			++i;
			--j;
		}
	}
	myqsort(i,r,_Comp);
	myqsort(l,j,_Comp);
	return ;
}
template<typename _T>
void myqsort(_T* l,_T* r){
	myqsort(l,r,less<>());
	return ;
}
int main(){
	srand(time(NULL));
	scanf("%d",&n);
	for(int i=1;i<=n;++i)
		scanf("%d",nums+i);
	myqsort(nums+1,nums+n+1);
	for(int i=1;i<=n;++i)
		printf("%d ",nums[i]);
	return 0;
}
2024/6/8 16:57
加载中...