快速排序算法是基于分治策略的一个排序算法,其基本思想是,对于输入的子数组,按以下三个步骤求解:
1 分解:选择一个基准元素,将整个数组分为大于基准元素,等于基准元素,小于基准元素的三组。基准元素在在划分的过程中确定
2 递归求解:通过递归调用快速排序算法分别对大于和小于基准元素的数组进行排序
3 合并:将递归的子数组进行合并最后成为排好序的数组
下面是程序的代码:
#include<iostream>
using namespace std;
int Partition(int a[],int p ,int r)
{
int i = p,j=r+1,sub;
int x = a[p];
//将<x的元素交换到左边区域
//将>x的元素交换到右边区域
while(true)
{
while(a[++i]<x&&j<r);
while(a[--j]>x);
if(i>=j) break;
sub = a[i];
a[i] = a[j];
a[j] =sub;
}
a[p] = a[j];
a[j] =x;
return j;
}
void QuickSort(int a[],int p,int r)
{
if(p<r)
{
int q = Partition(a,p,r);
QuickSort(a,p,q-1);//对左半段排序
QuickSort(a,q+1,r);//对右半段排序
}
}
int main()
{
int aa[4]={2,3,1,5};
QuickSort(aa,0,3);
for(int i= 0; i<4;i++)
cout<<aa[i]<<" ";
}