实现方法
1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。
2.j–由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。
3.i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。
4.再重复执行2,3二步,直到i==j,将基准数填入a[i]中。
java代码
public static void quickSort(int[] a , int left , int right) {
//因为要递归所以需要判断下
if(left<right)
{
//取 i,j 方便操作值 不会被覆盖, x 为第一个数
int i = left , j = right , x = a[left];
while(i<j) {
//先找右边比x(也就是比a[left] 第一个值小的数)
while(i<j && a[j]>x)
{
//如果满足a[j]小于或等于第一个数,获取到当前右边的索引(满足条件的下标)
j--;
}
//因为上面j是变化的 所以需要接着判断
if(i<j)
{
//把符合条件的放在a[i]的位置 i++是运行完这句话 i才变化 左边下标后移
a[i++]=a[j];
}
while(i<j&&a[i]<x)
{
//如果满足a[j]小于或等于第一个数,获取到当前左边的索引(满足条件的下标)
i++;
}
if(i<j)
{
//把左边的满足条件的赋值给右边 并且赋值后j--
a[j--]=a[i];
}
}
//最后把x放到 符合的位置
a[i]=x;
//第一步完成
//下面递归左右两次
quickSort(a,left,i-1);
quickSort(a, i+1, right);
}