AcWing 785. 快速排序
原题链接
简单
作者:
期待_5
,
2020-06-09 00:01:27
,
所有人可见
,
阅读 427
#include <iostream>
using namespace std;
const int N = 100010;
int q[N];
int n;
void swap(int &x, int &y) {
int tmp = x;
x = y;
y = tmp;
}
void quick_sort(int x[], int l, int r) {
if (r <= l) {
return;
}
int t = x[(l + r) >> 1]; // 如果数组已有序,使用l或者r的数据会超时
int left = l - 1, right = r + 1;
while(left < right) {
do left ++; while(x[left] < t);
do right --; while(x[right] > t);
if (left < right) swap(x[left], x[right]);
}
quick_sort(x, l, right);
quick_sort(x, right + 1, r);
return;
}
int main() {
scanf("%d", &n);
for(int i = 0; i < n; ++i) {
scanf("%d", &q[i]);
}
quick_sort(q, 0, n-1);
for(int i = 0; i < n; ++i) {
printf("%d ", q[i]);
}
return 0;
}