每天一题:快速排序

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);

    }
}
发布了19 篇原创文章 · 获赞 6 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/kanglupeng/article/details/103909055