求助大佬,小清新马蜂,为什么快速排序还会T呀
查看原帖
求助大佬,小清新马蜂,为什么快速排序还会T呀
569061
LX_zxy楼主2024/7/13 09:14
#include<bits/stdc++.h>
#define N 100010
using namespace std;
int Partition(int r[],int low,int high){
	int i=low,j=high,pivot=r[low];
	while(i<j){
		while(i<j&&r[j]>pivot)//在右边找小的,往左扫描 
			j--;
		while(i<j&&r[i]<=pivot)//在左边找大的,往右扫描 
			 i++;
		if(i<j)//将大的和小的交换位置 
			swap(r[i++],r[j--]);
	}
	if(r[i]>pivot){//更新pivot的位置 
		swap(r[i-1],r[low]);
		return i-1; 
	} 
	else{
		swap(r[i],r[low]);
		return i;
	}
} 
void QuickSort(int r[],int low,int high){
	if(low<high){//递归结束的条件 
		int mid=Partition(r,low,high); 
		QuickSort(r,low,mid-1);//mid已经是中间值,无需重拍
		QuickSort(r,mid+1,high); 
	}
} 
int main(){
    int n,a[N];
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    QuickSort(a,1,n);
    for(int i=1;i<=n;i++)
    	cout<<a[i]<<" ";
    return 0;   
}
2024/7/13 09:14
加载中...