编辑代码

public class KthLargestElement {
    public static int findKthLargest(int[] nums, int k) {
        if (nums == null || nums.length == 0 || k < 1 || k > nums.length) {
            return -1; // 无效输入
        }
        return quickSelect(nums, 0, nums.length - 1, k);
    }

    private static int quickSelect(int[] nums, int start, int end, int k) {
        int pivot = nums[start];
        int left = start + 1;
        int right = end;

        while (true) {
            while (left <= right && nums[left] > pivot) {
                left++;
            }
            while (left <= right && nums[right] < pivot) {
                right--;
            }
            if (left > right) {
                break;
            }
            int temp = nums[left];
            nums[left] = nums[right];
            nums[right] = temp;
            left++;
            right--;
        }

        int temp = nums[start];
        nums[start] = nums[right];
        nums[right] = temp;

        if (right == k - 1) {
            return nums[right];
        } else if (right > k - 1) {
            return quickSelect(nums, start, right - 1, k);
        } else {
            return quickSelect(nums, right + 1, end, k);
        }
    }

    public static void main(String[] args) {
        int[] arr = {3, 2, 1, 5, 6, 4};
        int k = 2;
        int kthLargest = findKthLargest(arr, k);
        System.out.println("第" + k + "大的元素是:" + kthLargest);
    }
}