一,什么是topK问题?
一组数据中,需要找出前k大(小)的数据
二,思路分析:以前k小为例
思路1:先排序再输出
如果是完全有序,那么输出所求数据很简答了(需要排序,将数据完全排序)
思路2:基于快排,分片,不完全排序
使用快排思想,不断分片,左侧是比基准小的元素,右侧是比基准大的元素,
令 index=基准元素下标
a, index<k 说明第k小元素在index右侧,在index右侧寻找新的基数,直到基数的下标index==k
b,index==k 说明第k小元素就是基准元素
c,index>k 说明第k小元素在index左侧,在index左侧寻找新的基数,直到基数的下标index==k
三.另一种思路
数组长度为n,需要找出topk 小
那么将数组分为两部分
result=[0,k-1],<