# Kth Largest Element in an Array ###### tags: `Medium` >question : https://leetcode.com/explore/interview/card/top-interview-questions-medium/110/sorting-and-searching/800/ >reference : [quick selection](https://magiclen.org/quickselect/) >related problem : ## My Solution ```java= class Solution { public int findKthLargest(int[] nums, int k) { Arrays.sort(nums); return nums[nums.length - k]; } } ``` ## Other Solution ```java= class Solution { public int findKthLargest(int[] nums, int k) { if (nums == null || nums.length == 0) return -1; return quickSelect(nums, 0, nums.length - 1, k); } private int quickSelect(int[] nums, int start, int end, int k) { if (start == end) return nums[start]; int left = start, right = end; int pivot = nums[left + (right - left) / 2]; while (left <= right) { while (left <= right && nums[left] > pivot) left++; while (left <= right && nums[right] < pivot) right--; if (left <= right) { swap(nums, left, right); left++; right--; } } //Be careful about the recursive functions here if (start + k - 1 <= right) return quickSelect(nums, start, right, k); if (start + k - 1 >= left) return quickSelect(nums, left, end, k - (left - start)); return nums[left - 1]; } private void swap(int[] nums, int a, int b) { int temp = nums[a]; nums[a] = nums[b]; nums[b] = temp; return; } } ```