最小二叉堆
优先队列是一种重要的数据结构这点不必多说。作为 Python 使用者,我觉得很自然地会想使用列表及相应的排序算法实现优先队列。但是 insert 方法是 O(n),sort 方法是 O(nlogn),这样的实现貌似不是很高效。实际上实现优先队列的经典方法是使用二叉堆,这种实现使得我们能够在 O(logn) 内排队和出队。这里给出一个二叉堆的基本实现:
class BinaryHeap(object):
def __init__(self):
self.heap = [0]
self.current_size = 0
def _sortUp(self, i):
while i // 2 > 0:
if self.heap[i] < self.heap[i//2]:
self.heap[i], self.heap[i//2]

本文介绍了最小二叉堆在实现优先队列中的重要性,通过完全二叉树结构来保证O(logn)的插入和删除效率。详细阐述了如何利用列表构建最小二叉堆,并提供了insert、delMin方法的实现原理,以及buildHeap方法将普通列表转化为最小二叉堆的策略。
最低0.47元/天 解锁文章
3925

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



