Python求解Top K问题:如何从一个数组中找出前K个最大或最小的数?
在实际的开发和数据分析过程中,Top K问题是一类经常遇到的问题。例如,在排行榜中找出得分最高的前10名,或者在海量数据中找出销售额最高的前50个商品等等。那么,如何用Python快速地解决这个问题呢?
- 堆排序法
堆排序是一种基于完全二叉树的排序算法,它可以在O(nlogn)的时间复杂度内,将一个无序序列排成一个有序序列。对于Top K问题,我们可以利用堆排序将数组中的前K个最大或最小的元素找出来。
下面是一个求Top K最大元素的示例代码:
import heapq
def top_k_max(nums, k):
return heapq.nlargest(k