经典排序算法的汇总之快速排序
快速排序
核心思想:,找到一个基准, 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
void quickSort(int a[] ,int l,int r)
{
if(l<r)
{
int i=l,j=r;//左下标 右下标
int x=a[l]; //以最左边的数为基准 并保存
while(i<j)
{
while(i<j&&a[j]>x)
{
j--;
}
if(i<j) //不要 =
{
a[i++]=a[j]; //把右边起比他小的 放到左边
}
while(i<j&&a[i]<x)
{
i++;
}
if(i<j)
{
a[j--]=a[i]; //把左边比他小的放大右边
}
a[i]=x; //放到应该的位置
quickSort(a,l,i-1); //左边
quickSort(a,i+1,r); //右边
}
}
}