复习排序二:快速排序
快速排序是对冒泡排序的一种改进,基本思想是,选取一个基准数,将数组分成两部分,一部分比基准数小,一部分比基准数大,然后按照此方法再对这两部分的进行分割,整个过程可以递归进行,最后将整个数列排序成有序的。
public static void quickSort(int[] nums,int left,int right) {
if(right <= left) return;
int temp;
int low = left;
int high = right;
int base = nums[left];//选取最左变的数作为基准数
while (left < right) {//先循环right是为了最后好调整基准数,如果先循环left,4 3 2 1 与 4 3 2 5,这两种情况,得增加多余的判断
while (nums[right] >= base && left < right) {
right--;
}
while (nums[left] <= base && right > left) {
left++;
}
if (left == right) break;
temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
nums[low] = nums[left];
nums[left] = base;
quickSort1(nums, low, left - 1);
quickSort1(nums, right + 1, high);
}