**
快排——Qsort
**
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<bits/stdc++.h>
const int maxn = 120;
using namespace std;
int n,a[maxn];
//快排
void quick_sort(int left,int right){
int ex,temp; //ex用来交换,temp用来存第一个数(基准数),以免在交换的时候丢失。
temp = a[left];
int i = left,j = right;
if(left>=right) return ; //考虑边界情况。如果没有这句,就会在递归那里,一直死循环下去
//cout<<left<<" "<<right<<endl;
while(i != j){
while(a[j] >= temp && i < j){
j--;
}
while(a[i] <= temp && i < j){
i++;
}
if(i < j){
ex = a[i];
a[i] = a[j];
a[j] = ex;
}
//cout<<i<<" "<<j<<endl;
}
a[left] = a[i];
a[i] = temp;
quick_sort(left,i - 1); //递归左区域
quick_sort(i + 1,right); //递归右区域
}
int main(){
cout<<"请输入待排序的数字个数,及数字"<<endl;
while(~scanf("%d",&n)){
for(int i = 1 ; i <= n ; i++){
scanf("%d",&a[i]);
}
quick_sort(1,n);
for(int i = 1 ; i <= n ; i++){
printf("%d",a[i]);
printf("%c",i != n?' ':'\n'); //三目运算符,控制输出格式
}
}
return 0;
}
//7 49 38 65 97 76 13 27