代码来源于视频中
public static void quickSort(int[] arr,int left,int right){
//进行判断,如果左边索引比右边索引要大,是不合法的,直接使用return结束这个方法
if(left > right)
{
return;
}
//定义变量保存基准数
int base = arr[left];
//定义变量i,指向最左边
int i = left;
//定义变量j,指向最右边
int j = right;
//当i和j不相遇的时候,在循环中进行检索
while(i != j)
{
//再由j从右往左检索比基准数小的,如果检索到比基准数小的就停下;
//如果检索到的比基准数大的或相等的,就继续检索
while(arr[j] >= base && i < j)
{
j--;//j从右往左移动
}
while(arr[i] <= base && i < j)
{
i++;//i从左往右移动
}
//代码执行到这里,代表i停下了,j也停下了.然后交换i和j位置的元素.
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//如果while循环的条件的不成立,会跳出循环,往下执行
//如果条件不成立,代表i和j相遇了
//如果i和j相遇了,就交换基准数这个元素和相遇位置的元素
arr[left] = arr[i];
arr[i] = base;
//执行到这一步,表示,基准数左边的数都比它小,基准数右边的数都比它大
//排基准数的左边
quickSort(arr,left,i-1);
//排基准数的右边
quickSort(arr,i+1,right);
}