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问题的主要内容,如果未能解决你的问题,请参考以下文章