AcWing 785. 快速排序
原题链接
简单
作者:
milk_zhy
,
2020-02-20 21:06:18
,
所有人可见
,
阅读 673
题目描述
blablabla
样例
blablabla
C++ 代码
#include<bits/stdc++.h>
using namespace std;
void quick_sort(int q[], int l, int r)
{
if (l >= r) return;
//递归结束条件
int i = l - 1, j = r + 1, x = q[l + r >> 1];
//选择两个指针,取两侧
//l+r的值右移1位,相当l+r的值除以2取整。取中间
while (i < j)
{
do i ++ ;
while (q[i] < x);
do j -- ;
while (q[j] > x);
//i++和 j--一直在动 左边有数比x大 右边有数比x小
if (i < j) swap(q[i], q[j]);
//只要两个指针没有相遇,就把他们交换
}
quick_sort(q, l, j), quick_sort(q, j + 1, r);
// 左右两边的递归边界:(l, j),(j + 1, r)
}
int main(){
int n;
cin>>n;
int num[n];
for (int i = 0; i < n; ++i) {
scanf("%d",&num[i]);
}
quick_sort(num,0,n-1);
for (int j = 0; j < n; ++j) {
cout<<num[j]<<" ";
}
}