题目
给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。
请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/kth-largest-element-in-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
:::

代码
class Solution {public int findKthLargest(int[] nums, int k) {int length = nums.length; //获取数组长度bubbleSort(nums); //对数组做升序排序return nums[length - k];}//冒泡排序public static void bubbleSort(int[] arr){for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - i - 1; j++) {int tmp = 0;if (arr[j] > arr[j+1]){tmp = arr[j+1];arr[j+1] = arr[j];arr[j] = tmp;}}}}//优化冒泡排序public static void optimalBubbleSort(int[] arr){int lastExchangeIndex = 0; //记录最后一次交换的位置int sortBorder = arr.length - 1; //无序数列的边界for (int i = 0; i < arr.length - 1; i++) {boolean isSorted = true; //有序标记,当一轮循环元素无交换时为truefor (int j = 0; j < sortBorder; j++) {int tmp = 0;if (arr[j] > arr[j+1]){tmp = arr[j];arr[j] = arr[j+1];arr[j+1] = tmp;isSorted = false; //元素位置发生改变lastExchangeIndex = j; //记录最后一次交换的位置}}sortBorder = lastExchangeIndex;if (isSorted)break; //当元素位置不发生变化时,说明此时已经有序}}}
