快速排序
思路
快速排序采用了分治的思想。
1.首先选取一个基准baseNum。然后将数组分成左右两个部分,左边的数是小于等于基准数的,右边的数是大于等于基准数的。
2.对两个子数组按照上述方法调整划分各自跟小的左右数组,直到数组的长度
<
=
1
<=1
<=1,此时数组已然有序。
//快速排序
void QuickSort(int a[],int l,int r)
{
if(l<r)
{
int p = AdjustArray(a,l,r);
QuickSort(a,l,p-1);
QuickSort(a,p+1,r);
}
}
int AdjustArray(int a[],int l,int r)
{
int baseNum = a[l];
while(l<r)
{
while(l<r)
{
if(a[r]<baseNum)
{
a[l]=a[r];
break;
}
r--;
}
while(l<r)
{
if(a[l]>baseNum)
{
a[r]=a[l];
break;
}
l--;
}
}
a[l]=baseNum;
return l;
}