快速排序 牛刀小试

2021-09-20  本文已影响0人  漫行者_

快排的原理大家都知道,关键是写的时候容易出问题。
对于我需要注意的是从后面开始交换,因为你去掉哨兵是第一个。

  public static void quickSort(int[] nums, int start, int end) {
        if(start >= end) return;
        int left = start;
        int right = end;
        int flag = nums[start];
        while (left < right) {
            while (left < right && nums[right] > flag) {
                right--;
            }
            swap(nums, left, right);
            while (left < right && nums[left] <= flag) {
                left++;
            }
            swap(nums, left, right);
        }
        quickSort(nums, start, left -1);
        quickSort(nums, left + 1, end);
    }

    public static void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }
上一篇 下一篇

猜你喜欢

热点阅读