📜  最小堆插入 (1)

📅  最后修改于: 2023-12-03 14:55:21.841000             🧑  作者: Mango

最小堆插入

最小堆是一种数据结构,它满足以下性质:

  • 每个节点的值都小于或等于其子节点的值。
  • 根节点的值是堆中所有元素的最小值。

最小堆的插入操作是将一个新的元素插入到堆中,然后重新排列堆使其满足最小堆的性质。

实现

最小堆通常使用数组来实现,因为它的层次结构可以映射到数组的索引方式。插入操作可以使用以下步骤实现:

  1. 将要插入的元素添加到数组的末尾。
  2. 将新元素不断向上移动直到它的父节点小于或等于它。
  3. 完成插入操作。

以下是Python实现的最小堆插入函数:

def insert(heap, value):
    heap.append(value)
    i = len(heap) - 1
    while i > 0 and heap[i] < heap[(i-1)//2]:
        heap[i], heap[(i-1)//2] = heap[(i-1)//2], heap[i]
        i = (i-1) // 2
示例

下面展示一个将元素插入最小堆的示例:

>>> heap = [3, 4, 7, 2, 9, 10]
>>> insert(heap, 1)
>>> heap
[1, 3, 7, 4, 9, 10, 2]

我们将元素1插入到由[3, 4, 7, 2, 9, 10]构成的堆中,得到了一个新的堆[1, 3, 7, 4, 9, 10, 2],它满足最小堆的性质。

总结

通过本文的介绍,我们了解了最小堆的插入操作及其实现方法。最小堆的插入操作可以通过将新元素插入到堆末尾,然后重新排列堆来完成。最小堆是一种重要的数据结构,在算法中应用广泛。