40分,后三个点超时,用快速排序,有注释
查看原帖
40分,后三个点超时,用快速排序,有注释
1120932
ansan楼主2023/12/27 19:08
using namespace std;
int arr[100000000];
void quickSort(int arr[],int l,int r)//left和right的首字母 
{
	if(l>=r)  return;
	int base,temp;int i=l,j=r;
	base = arr[l];  //取最左边的数为基准数
	while(i<j)
	{
		while(arr[j]>=base&&i<j)j--;//顺序很重要
		while(arr[i]<=base&&i<j) i++;
		if(i < j)
		{temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
	}//基准数归位
	arr[l]=arr[i];arr[i]=base;
	quickSort(arr,l,i-1);//递归左边
	quickSort(arr,i+1,r);//递归右边
}
int main()
{	int n;cin>>n;
	for(int i=1;i<=n;i++)   scanf("%d",&arr[i]);
	quickSort(arr,1,n);
	for(int i=1;i<=n;i++){
		if(i != n)
		cout << arr[i] << " ";
		else
		cout << arr[i] << "\n";
	}
	return 0;    
	}
2023/12/27 19:08
加载中...