从无序数组中找出第K大(小)的数。 一般思路: 利用partition算法。O(N),基于概率。 维护一个小(大)顶堆 BFPRT流程 将数组分组,如5个数分一组 组内排序 将每个组的中位数(偶数拿上中位数)拿出来组成新数组,长度为N/5 新数组递归上述流程,k=newArray.length()/2,得到新数组中位数(第一半小的数)num 以num为支点,选择左边或右边继续BFPRT或者返回num 解决了什么:partition中支点选择问题,保证支点为中位数左右