Heap_size in heap_sort

Heap_size in heap_sort

本文关键字:sort heap size Heap in      更新时间:2023-10-16

我正在阅读Cormen的"算法导论",我正在尝试实现堆排序,但有一件事我一直无法理解:我们如何计算给定数组的heap_size?我的课本上说

表示堆的数组 A 是具有两个属性的对象: A.length,它(像往常一样(给出数组中元素的数量, 和 A.heap-size,表示堆中有多少个元素 存储在数组 A 中。也就是说,虽然 A[1 .A.长度]可能包含 数字,仅 A[1..A.堆大小] 中的元素,其中 0 <= A.堆大小 <= A.长度,是堆的有效元素。

如果我实现一个数组作为std::vector<T> Arr,那么它的大小将是Arr.size,但它heap_size是什么目前超出了我的范围。

堆大小应该是一个单独存储的变量,由您自己管理。

每当从堆中删除或添加到堆中时,都应相应地递减或递增该值。

在C++中,使用 vector ,您实际上可以使用 size ,因为底层表示是一个至少与向量大小一样大的数组,如果您以较小的大小调用 resize,则保证保持相同的大小。(因此,底层数组将是数组大小,向量大小将是堆大小(。