参考文章分析
https://blog.csdn.net/shujuelin/article/details/82423852
下面贴上我自己实现的代码
public static void quickSort(int[] array, int left, int right){
if (left > right) {
return;
}
//定义基准
int base=array[left];
//定义双指针
int i=left; //0
int j=right; //leng -1
int t;
while(i!=j){
//一定要从右方开始
while(array[j] >=base && i < j){ //在base右边找到比base小的值停下
j--;
}
while(array[i]<=base && i < j){ //在base左边找到比base大的值停下
i++;
}
//交换 i j位置上的数据
if(i<j){
t=array[i];
array[i]=array[j];
array[j]=t;
}
}
//当i=j时 ,两指针相遇 ,交换基准和当前数据
array[left]=array[i]; // 和array[left]=array[j]; 一样, 因为i = j
array[i]=base;
//递归 , 分别循环base左右两边的数据
quickSort(array,left,j-1);
quickSort(array,j+1,right);
}