关于手写快排
  • 板块灌水区
  • 楼主yzx_mexxi
  • 当前回复16
  • 已保存回复16
  • 发布时间2024/9/16 10:29
  • 上次更新2024/9/16 13:58:11
查看原帖
关于手写快排
766934
yzx_mexxi楼主2024/9/16 10:29
#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,原因是大量相同数字导致快速排序退化,有没有优化的方法

2024/9/16 10:29
加载中...