赞
踩
堆是一个二叉树,它的每个父节点的值都会小于或等于所有孩子节点的值。它使用了数组来实现:从零开始计数,对于所有的k,都有heap[k] <= heap[2k+1]和heap[k] <= heap[2*k+2] 。为了便于比较,不存在的元素被认为是无限大。堆最有趣的特性在于最小元素总是在根节点。
初始话一个堆,可以使用list来初始话,或者可以通过一个函数heapify()来把list转化成堆。
heapq.heappush(heap, item)
将item的值加入到堆中,保持堆的不变性
heapq.heappop(heap)
弹出并返回heap的最小元素,保持堆的不变性。如果堆为空,抛出IndexError。使用heap[0]可以访问最小的元素而不弹出它。
heapq.heappushpop(heap, item)
将item放入堆中,然后弹出并返回heap的最小元素。该操作类似于先heapq.heappush(heap, item)和heapq.heappop(heap)的组合
heapq.heapify(x)
将list x抓换成堆。
heapreplace(heap, item)
弹出并返回heap中最小的一项,同时推入新的item。如果堆为空报错IndexError
类似于heapq.heappop()和heapq.heappush()的组合。
heapq.merge(*iterable, key=None, reverse=False)
将多个已排序的输入合并为一个已排序的输出。返回已排序的值的iterator。
heapq.nlargest(n, iterable, key=None)
从iterable所定义的数据集中返回前n个最大元素组成的列表。
heapq.nsmallest(n, iterable, key=None)
从iterable所定义的数据集中返回前n个最小元素组成的列表。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。