代码模板
/*
学acwing的算法基础课学来的,喜欢的话多多支持呀。
*/
//排列中比较不能直接用l或r,只能用i或j
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int a[N];//全局变量
void qsort(int l,int r)
{
if(l>=r) return;//元素排完了,直接跳出来
int temp=a[l+r>>1],i=l-1,j=r+1;/*temp把中间值作为基准这样,
其实也可以第一个或者最后一个元素作为基准
但是防止元素过界最好选择中间的作为基准
i-1的目的是更好的排序
j+也是
怕两个相等的时候排不了
*/
while(i<j)//元素不为空
{
while(a[++i]<temp);//左边找比基准小的
while(a[--j]>temp);//右边找比基准大的
if(i<j) swap(a[i],a[j]);//交换二者的值
}
qsort(l,j),qsort(j+1,r);//继续排左边和右边的,方法跟上面一样,用递归来做
}
int main()
{ int n;
scanf("%d",&n);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
qsort(0,n-1);//快速排序函数
for(int i=0;i<n;i++) printf("%d",a[i]);
return 0;
}
/*到达胜利之前无法回头*/