#include<iostream>
#include<algorithm>
using namespace std;
void qsort(int* q,int l,int r){
if(l>=r){
return;
}
int i=l-1,j=r+1,x=q[(l+r)/2];
while(i<j){
do{++i;}while(q[i]<x);//找出比中间的x大的数
do{--j;}while(q[j]>x);//找出比中间x小的数
if(i<j){
swap(q[i],q[j]);
}
//保证左边的数比x小,右边的数比x大
}
qsort(q,l,j);
qsort(q,j+1,r);
}
int main(){
int n;
while(cin>>n){
int q[n+1];
for(int i=0;i<n;++i){
cin>>q[i];
}
qsort(q,0,n-1);
for(int i=0;i<n;++i){
cout<<q[i]<<" ";
}
}
}
acwing学习笔记-快速排序
最新推荐文章于 2024-06-28 11:06:59 发布