image.png

    • 由于找到第K个数,很容易想到是划分分区的方法,划分分区自然想到快排
    • 容易出现问题

      • 快排比较的时候,忘记加上等号
      • 递归的快排比较时,一定注意要和基准值相反的数先 ```java Random random = new Random(); public int findKthLargest(int[] nums, int k) { if (nums.length == 0) return 0; return quickSort(nums, 0, nums.length - 1, nums.length - k); }

        private int quickSort(int[] arr, int l, int r, int index) { if (l > r) return 0; int i = r, j = l; while (j < i) {

        1. //注意判断加等于号,要和基准值开始的位置的反方向开始走
        2. while (j < i && arr[l] <= arr[i])
        3. i--;
        4. while (j < i && arr[l] >= arr[j])
        5. j++;
        6. swap(arr, i, j);

        } swap(arr, l, i); if (i == index) {

           return arr[i];
        

        } return i < index ? quickSort(arr, i + 1, r, index) : quickSort(arr, l, i - 1, index); }

        private int getRandom(int l, int r) { return l + random.nextInt(r - l + 1); }

        private void swap(int[] arr, int i, int j) { int t = arr[i]; arr[i] = arr[j]; arr[j] = t; }

    ```