Top-K问题,不难,思路优化过程:
1.全局排序 O(n*lg(n))
2.局部排序,只排序topK个数,冒泡排序前k个,O(n*k)
3.堆排序,topK个数也不用排序了,O(n*lg(k))
4.分治法,每个分支“都要”递归,例如:快速排序,O(n*lg(n))
5.减治法,“只要”递归一个分支,例如:二分查找O(lg(n)),随机选择O(n)
6.TopK的另一个解法:随机选择+partition
7.比特位图法(bitmap)计数
转载别人博客:(写的超详细,通俗易懂,Top-K问题必看)
https://blog.youkuaiyun.com/u013132035/article/details/82936032