AcWing 785. 快速排序
原题链接
简单
作者:
俺是早睡小朋友
,
2022-02-16 17:03:39
,
所有人可见
,
阅读 181
//自测一次
# include<iostream>
using namespace std;
const int N=1e6+10;
int n;
int a[N];
void pai(int q[],int l,int r)
{
if(r<=l)return;
int x=q[(l+r)/2];
int i=l-1,j=r+1;
while(i<j)
{
do i++;while(q[i]<x);
do j--;while(q[j]>x);
if(i<j)
{
swap(q[i],q[j]);
}
}
pai(q,l,j);
pai(q,j+1,r);
}
int main()
{
scanf("%d",&n);
for(int k=0;k<n;k++)
{
scanf("%d",&a[k]);
}
pai(a,0,n-1);
for(int h=0;h<n;h++)
{
printf("%d ",a[h]);
}
return 0;
}
2022.2.23默写两次,忘记特判,交换没有在while内进行,交换条件判断不明白
2022.2.18默写一次,忘记交换,三个问题(1.递归时的q,l,j为何是这样。2.while(i<=j)有无等于号。3.交换怎么交换)
2022.2.16自测一次