private void quickSort(int[] nums, int start, int end) {
if (nums == null || nums.length <= 1
|| start >= end
|| start < 0 || start >= nums.length
|| end < 0 || end >= nums.length) {
return;
}
int i = start, j = end;
while (i < j) {
//先让j向左移动
while (i < j && nums[i] <= nums[j]) {
j --;
}
//找到nums[j] < nums[i],然后交换i和j的数据
if (nums[i] > nums[j]) {
nums[i] = nums[i] + nums[j];
nums[j] = nums[i] - nums[j];
nums[i] = nums[i] - nums[j];
}
//让 i向又移动,找到nums[i] > nums[j],交换i和j的位置
while (i < j && nums[i] <= nums[j]) {
i ++;
}
if (nums[i] > nums[j]) {
nums[i] = nums[i] + nums[j];
nums[j] = nums[i] - nums[j];
nums[i] = nums[i] - nums[j];
}
}
quickSort(nums, start, i - 1);
quickSort(nums, i + 1, end);
}
}