快速排序
- 选定第一个元素x为中心轴
- 将小于x的数字放在x的左边
- 将大于x的数字放在x的右边
- 分别对左右子数组重复前3步操作
代码:
#include <bits/stdc++.h>
using namespace std;
void quick_sort(vector<int>& a, int l, int r) {
if (l >= r) return;
int mid = a[l], left = l, right = r;
while (l < r) {
while (l < r && a[r] >= mid) r--;
a[l] = a[r];
while (l < r && a[l] <= mid) l++;
a[r] = a[l];
}
a[l] = mid;
quick_sort(a, left, l);
quick_sort(a, l + 1, right);
}
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int& i : a) cin >> i;
quick_sort(a, 0, n - 1);
for (int i : a) cout << i << ' ';
}