AcWing 785. 快速排序
原题链接
简单
作者:
blalalt
,
2020-05-02 10:13:37
,
所有人可见
,
阅读 625
C++ 代码
#include <iostream>
#include <vector>
using namespace std;
void quick_sort(vector<int> & arr, int l, int r) {
if (l >= r) return ;
int i=l-1, j=r+1, x=arr[l+r>>1];
while (i < j) {
while (arr[++i] < x); // 找到一个大于 x 的值
while (arr[--j] > x); // 找到一个小于 x 的值
if (i < j) swap(arr[i], arr[j]); // 交换两个值,把他们放在正确的位置(左右两边)
}
// 现在 一个位置已经确定了 j 递归排序 左右两边
quick_sort(arr, l, j);
quick_sort(arr, j+1, r);
}
int main() {
int n;
cin >> n;
vector<int> arr;
int tmp;
while ( n -- ) {
cin >> tmp;
arr.push_back(tmp);
}
quick_sort(arr, 0, arr.size()-1);
for (auto i : arr) {
cout << i << ' ';
}
return 0;
}