解决的问题:在一个数组中找到最小的k个数 常规解法:1.排序,输出前k个数,时间复杂度O(n*log(n)). 2.利用一个大小为k的大根堆,遍历数组维持大根堆,最后返回大根堆就可以了,时间复杂度O(n*log(k)). BFPRT解法: 利用快速排序的思路,选取一个划分值,小于这个数的放右边,等于这个数的放中间,大于这个数的放右边.如下图: 这样我们就可以把问题转化为:在这个数组中找第k小的数,然后把k左边的数返回就可以得到最小的k个数了. 上图可得到两个边界值L,R,与k进行比较,如果L,R…