方法1:排序–时间复杂度不好
O(N*logN)–底层是快排
- 降序
或者
方法2:优先级队列–空间复杂度不好
O(N+klogN)–建堆为N,每次出数据向下调为logN,出k次为klogN
空间复杂度为O(N)–k个数大堆底层要存储
方法3–最优方法
*时间复杂度:O(K+(N-k)logK)–建立k个数的小堆,N-K个数进行pop和push再调整k个数的小堆
空间复杂度:O(k)–建立k个数的小堆
当N远大于K时,这种方法更有。尤其是N大到内存中存不下必须使用这种方法,前两个方法用不了,因为第三种只需要存储k个数
加粗样式