TopK问题

从arr[1, n]这n个数中,找出最大的k个数,这就是经典的TopK问题

https://mp.weixin.qq.com/s/FFsvWXiaZK96PtUg-mmtEw

  • 全局排序,O(n*lg(n))

  • 局部排序,只排序TopK个数,O(n*k)

  • ,TopK个数也不排序了,O(n*lg(k))

  • 分治法,每个分支“都要”递归,例如:快速排序,O(n*lg(n))

  • 减治法,“只要”递归一个分支,例如:二分查找O(lg(n)),随机选择O(n)

  • TopK的另一个解法:随机选择+partition

你可能感兴趣的:(算法)