#4和#5超时
查看原帖
#4和#5超时
93982
你行我伴楼主2024/3/17 19:51
#include <iostream>
#include <ctime>
#include <cstdlib>
#define maxn 100000

using namespace std;
int partion(int a[], int start, int end);
void QuickSort(int a[], int start, int end);
void swap(int &a, int &b);
int main(){
	int n, a[maxn];
	cin >> n;
	for(int i=0; i<n; i++)
		cin >> a[i];

	QuickSort(a, 0, n-1);
	
	for(int i=0; i<n; i++)
		cout << a[i] <<" ";
}
void swap(int &a, int &b){
	int tmp = a;
	a = b;
	b = tmp;
}
int partion(int a[], int start, int end){
	srand(time(0));
	int randIdx = rand()%(end+1-start) + start;
//	cout<<pivot<<endl;
	swap(a[start], a[randIdx]);
	int pivot = start;
	int j = start+1;
	for(int i=start+1; i<=end; i++){
		if(a[i] <= a[pivot]){
			swap(a[i], a[j]);
			j++;
		}
	}
	swap(a[pivot], a[j-1]);
	pivot = j-1;
	return pivot;
}
void QuickSort(int a[], int start, int end){
	int pivot;
	if(start >= end)
		return;
	pivot = partion(a, start, end);
	QuickSort(a, start, pivot-1);
	QuickSort(a, pivot+1, end);
}
2024/3/17 19:51
加载中...