C++实现快速排序

快速排序大体思路:

C++实现快速排序

快速排序基本思想(递归):

    1.先从数列中取出一个数作为基准数。

    2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。

    3.再对左右区间重复第二步,直到各区间只有一个数。

代码:

#include <iostream>
#include <cstdio>
using namespace std;
int a[100];
void quick_sort(int l,int r)
{
    if(l>=r) return;
    int i=l;
    int j=r;
    int x=a[l];  ///x为初始基准值
    while(i<j)
    {
        ///找右边小于x的值
        while(i<j&&a[j]>x)
            j--;
        if(i<j)
        {
            a[i]=a[j]; ///将找到的数移到位置左边
            i++;    ///i进行右移
        }
        while(i<j&&a[i]<x) ///找左边大于x的值
            i++;
        if(i<j)
        {
            a[j]=a[i];  ///将找到的数进行右移
            j--;  ///j继续进行下一个寻找
        }
    }
    a[i]=x;  ///赋予i位置
    quick_sort(l,i-1);  ///递归
    quick_sort(i+1,r);
}
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
        cin>>a[i];
    quick_sort(0,n-1);
    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}