AcWing 785. 快速排序
原题链接
简单
作者:
tq
,
2024-04-04 19:55:17
,
所有人可见
,
阅读 6
//第二遍完全忘记 看了好久
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int a[N];
void quick_sort(int a[N],int l, int r){
if(l >= r) return;
int x = a[l + r >> 1];
int i = l - 1, j = r + 1;
while(i < j){
do i ++; while(a[i] < x);
do j --; while(a[j] > x);
if(i < j)
swap(a[i], a[j]);//因为每次swap完也需要++和--,所以用dowhile先进行加减
}
quick_sort(a, l, j); //i此时》=j,选哪一个都行
quick_sort(a, j + 1, r);
}
int main()
{
int n;
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]);
quick_sort(a, 0, n - 1);
for (int i = 0; i < n; i ++ ) printf("%d ", a[i]);
return 0;
}