テンプレートのクイックソート

分割統治

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define INF 0x3f3f3f3f
int n,a[100009]; 
void fast_sort(int l,int r){
    
    
	int mid=a[(l+r)/2];
	int i=l,j=r;
	do{
    
    //do while 
		while(a[i]<mid)i++;//寻找交换 
		while(a[j]>mid)j--;
		if(i<=j){
    
    //交换勿忘指针变换 
			swap(a[i],a[j]);
			i++;j--;
		}
	}while(i<=j){
    
     
	if(l<j)fast_sort(l,j);//递归左边 
	if(r>i)fast_sort(i,r);//递归右边 
}
int main(){
    
    
	int n;
	scanf("%d",&n);
	for(int i=0;i<n;i++)scanf("%d",&a[i]);
	sort(a,a+n);
	for(int i=0;i<n;i++){
    
    
		if(i)printf(" "); 
		printf("%d",a[i]); 
	}

	return 0;
	
}

おすすめ

転載: blog.csdn.net/Minelois/article/details/114108051
おすすめ