部分参考:
漫画:寻找无序数组的第K大元素
给定数组如下,求第K大的元素,K=6:

方法1:排序法
先将数组排序,然后按照索引找到第K大的元素
排序算法见:常见七种排序算法
方法2:插入法
1.维护一个长度为k的数组A的有序数组(降序),用于存储已知的k个较大的元素。
2.遍历原数组,每遍历到一个元素,和数组A中最小的元素相比较,如果小于等于数组A的最小元素,继续遍历;如果大于数组A的最小元素,则插入到数组A中,并把曾经的最小元素删除。
3.长度为K的数组中,最后一个元素就是第K大的元素
时间复杂度:O(nk)
方法3:小顶堆法
1.使用数组的前K个元素,构建一个大小为K的小顶堆
堆:完全二叉树
大顶堆:每个结点的值都大于或等于其左右孩子结点的值
小顶堆:每个结点的值都小于或等于其左右孩子结点的值
2.遍历数组中剩下的元素,和堆顶相比较,如果小于