看其他有关快排的思路看不太懂,写程序也没有思路,后来在B站上看到这个视频,感觉讲的非常通俗易懂。
以数组最左边的数当做基准数,则需要先从右边检索;如果以数组最右边的数当做基准数,则需要从左边开始检索。
public static void quickSort(int[] nums, int left, int right) {
int base = nums[left];
int i = left;
int j = right;
int temp = 0;
while (i != j) {
while (nums[j] >= base && i > j) {
j--;
}
while (nums[i] <= base && i > j) {
i++;
}
//当右边出现比他小,且左边比他大的情况,就交换
temp = nums[j];
nums[j] = nums[i];
nums[i] = temp;
}
//当两个索引相等时,则交换相等位置的元素和基准值
nums[left] = nums[i];
nums[i] = base;
//递归调用,对左表和右表排序
quickSort(nums,left,i-1);
quiteSort(nums,i+1,right);
}