堆的基本存储

堆是什么?

堆是一种基本的数据结构,它是一棵完全二叉树,其中每个节点的值都大于等于(或小于等于)其左右子节点的值。堆可以用来实现优先队列、排序算法等。

堆的基本操作

堆的基本操作有两个:插入和删除。插入操作将一个元素添加到堆中,而删除操作则从堆中删除一个元素。

插入操作

插入操作通常会在堆的末尾添加一个元素,然后将其与父节点比较,如果比父节点大(或小),则交换它们的位置,直到满足堆的性质。

void insert(int x) {
    heap[++n] = x;
    int i = n;
    while (i > 1 && heap[i] > heap[i / 2]) {
        swap(heap[i], heap[i / 2]);
        i /= 2;
    }
}

删除操作

删除操作通常会删除堆的根节点,然后将堆的最后一个元素放到根节点上,并将其与子节点比较,如果比其中一个子节点小(或大),则与其交换位置,直到满足堆的性质。

堆的基本存储

int remove() {
    int x = heap[1];
    heap[1] = heap[n--];
    int i = 1;
    while (i * 2 

最后编辑于:2023/11/29作者: 心语漫舞