topK问题

Posted ocean1100

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了topK问题相关的知识,希望对你有一定的参考价值。

概述

在N个乱序数字中查找第K大的数字,时间复杂度可以减小至O(N).
可能存在的限制条件:
要求时间和空间消耗最小、海亮数据、待排序的数据可能是浮点型等。

方法

方法一

** 对所有元素进行排序,之后取出前K个元素,时间复杂度高,不提倡。 **
思路:使用快排,选择排序,堆排序。
时间复杂度:O(n*logn)+O(K)=O(n*logn)
特点:需要对全部元素进行排序,K=1时,时间复杂度也为O(n*logn)。

方法二

** 只需要对前K个元素排序,剩下N-K个元素不需要排序,时间复杂度高,不提倡。 **
思路:使用选择排序 或 冒泡排序, 进行K此选择,可得到第K大的数。
时间复杂度:O(n*k)

以上是关于topK问题的主要内容,如果未能解决你的问题,请参考以下文章

TopK问题

解决TopK问题的方式

分治思想--快速排序解决TopK问题

多情景下的TopK问题

Java最小堆解决TopK问题

堆排序应用之topK问题