题目链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-array/
1 先快速排序,再取第 K个
class Solution { public int findKthLargest(int[] nums, int k) { quickSort(nums,0,nums.length-1); return nums[nums.length-k]; } public void quickSort(int[] nums, int leftIndex, int rightIndex) { if (leftIndex > rightIndex) { return; } int left = leftIndex; int right = rightIndex; int key = nums[left]; while (left < right) { //从右往左扫描,找到第一个比基准值小的元素 while (left < right && nums[right] >= key) { right--; } //找到这种元素将arr[right]放入arr[left]中 nums[left] = nums[right]; while (left < right && nums[left] <= key) { //从左往右扫描,找到第一个比基准值大的元素 left++; } //找到这种元素将arr[left]放入arr[right]中 nums[right] = nums[left]; } //基准值归位 nums[left] = key; //对基准值左边的元素进行递归排序 quickSort(nums, leftIndex, left - 1); quickSort(nums, left + 1, rightIndex); } }
2 堆排序: