请问一下快排超时了有办法解决吗?
查看原帖
请问一下快排超时了有办法解决吗?
1025061
gzr_100楼主2024/11/19 09:29

求助,我的快排超时了呜呜呜

#include<iostream>
#include<ctime>
using namespace std;
int num[100001];

void quick_sort(int l,int r)
{
	if(l>=r) return;
	int k=rand()%(r-l+1)+l;
	swap(num[l],num[k]);
	int base=num[l];
	int lptr=l,rptr=r;
	while(lptr<rptr)
	{
		while(num[rptr]>base&&lptr<rptr) rptr--;
		num[lptr]=num[rptr];
		while(num[lptr]<=base&&lptr<rptr) lptr++;
		num[rptr]=num[lptr];
	}
	num[lptr]=base;
	quick_sort(l,lptr-1);
	quick_sort(rptr+1,r);
}

int main()
{
	srand((unsigned int)time(NULL));
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>num[i];
	
	quick_sort(1,n);
	
	for(int i=1;i<=n;i++)
	cout<<num[i]<<" ";
	return 0;
}
2024/11/19 09:29
加载中...