求助,快排用了随机数还是60分
查看原帖
求助,快排用了随机数还是60分
365167
NepnepZero楼主2023/11/3 20:23
#include <bits/stdc++.h>
using namespace std;
int a[100005];
void quicksort(int p[],int i,int j);
int main()
{
	int n;
	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]<<' ';
	return 0;
}

void quicksort(int p[],int l,int r)
{
	if(l>=r)
		return;
	swap(a[l],a[rand()%(r-l+1)+l]);
	int temp=l,i=l,j=r;
	while(i!=j)
	{
		while(a[j]>=a[temp] && j>i)
			j--;
		while(a[i]<=a[temp] && j>i)
			i++;
		if(i<j)
			swap(a[i],a[j]);
	}
	swap(a[i],a[temp]);
	quicksort(p,temp,i-1);
	quicksort(p,i+1,r);
	return;
}
2023/11/3 20:23
加载中...