翻译自Python2.7官方文档。
Heapd
Python中的heapd实现了小顶堆的功能.
heap[k]<=heap[2∗k+1]heap[k]<=heap[2∗k+2]heap[k]<=heap[2∗k+1]heap[k]<=heap[2∗k+2]
| 方法 | 描述 |
|---|---|
| heappush(heap, item) | 加入元素 |
| heappop(heap) | 返回并删除堆顶(最小值) |
| heappushpop(heap, item) | 先加入元素,再删除堆顶元素(最小值) |
| heapify(x) | 将列表转换成一个小顶堆 |
| heapreplace(heap, item) | 先删除堆顶元素(最小值),再加入元素 |
| merge(iterables) | 合并有序列表(从小到大),返回一个迭代器 |
| nlargest(n, iterable[,key] | 返回一个列表,包含最大的n个元素。相当于sorted(iterable, key=key, reverse=True)[:n] |
| nsmallest(n, iterable[,key]) | 返回一个列表,包含最小的n个元素。相当于sorted(iterable, key=key)[:n] |
实例
>>> def heapsort(iterable):
... h = []
... for value in iterable:
... heappush(h, value)
... return [heappop(h) for i in range(len(h))]
...
>>> heapsort([1, 3, 5, 7, 9, 2, 4, 6, 8, 0])
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
延伸
可以将堆看做一个常规的Python列表,heap[0]是最小的元素,而且heap.sort()保持堆不变
本文详细介绍了Python中的heapd模块,该模块实现了一种小顶堆的数据结构,包括heappush、heappop等方法的使用,并通过实例展示了如何利用heapd进行排序。
948

被折叠的 条评论
为什么被折叠?



