Find the K-Largest
Last updated
Last updated
输入:
复制返回值:
复制
输入:
复制返回值:
复制说明:
method 1: heapsort
use a min heap to store K elements
continue appending elements to heap and then pop the minimum one and keep the largest K elements
when we store the last K elements in heap, just pop the minimum one and return then it is the top K largest element
Note: we need to first append next element into heap to have k+1 element , then pop the smallest one. Otherwise, it is possible that we pop the K^th largest element from heap, but insert the next element smaller than the top K^th largest element to heap. This is wrong, as we miss the K^th largest element
method 2: quick select
randomly pick pivot
partition array by pivot and then return pivot position
compare pivot position with K
if pos >k: search left space of pivot recursively
if pos < k: search right space of pivot recursively
otherwise: return pos and a[pos]
method 1: Heap Sort
method 2: QuickSelect, based on Quick Sort
有一个整数数组,请你根据快速排序的思路,找出数组中第 大的数。给定一个整数数组 ,同时给定它的大小n和要找的 ,请返回第 大的数(包括重复的元素,不用去重),保证答案存在。要求时间复杂度