堆排序
堆排序即是利用堆的特性对记录序列进行排序的一种排序方法。
python的标准库——heapq
heap是python的一个数据结构,但实际上是一个优先队列。实际上python没有独立的堆类型,而是只有一个包含一些堆操作的模块。这个模块名为heapq。
一共包括6种函数类型:
heappush(heap,x) | 将x压入栈中 |
heappop(heap) | 将最小的元素弹出 |
heapify(heap) | 让列表具备堆特征 |
heapreplace(heap,x) | 弹出最小的元素,并将x压入堆中 |
nlargest(n,iter) | 返回iter中n个最大的元素(TOPN问题) |
nsmallest(n,inter) | 返回iter中n个最小的元素 |
实例
#字典堆:取出前k个value值最大的key值
import collections
import heapq
class Solution:
def topKFrequent(self, nums: List[int], k: int) -> List[int]:
count = collections.Counter(nums)
return heapq.nlargest(k, count.keys(), key=count.get)