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;
}