arrays - A.length 和 A.heap-size 有什么区别?

标签 arrays algorithm data-structures heap

我有一个关于堆排序的问题。它在一本算法书中指出 A.heap-size<= A.length 我不明白两者之间的区别。如果一个数组代表一个堆,为什么有可能 A.heap-size小于 A.length .我知道 A.heap-size表示堆内的元素个数,那为什么不完全只等于数组内的元素个数呢?

最佳答案

只是为了扩展一个答案。进一步阅读那本书。

数组的

A.heap_size,是放置堆(max_heap 或min_heap)结构元素的地方。它在排序或排队的范围内是有意义的。你是对的:这是堆内元素的数量,但它仅在堆排序的第一次迭代时等于A.length

在下一次迭代中,在将 max_heap 树 (A[1]) 的根与 A[i] = A[A.length] 交换之后(内部的最后一个元素数组 A),A[1] 元素将是 A 的最后一个元素,A.heap_sort 值将减 1,max_heap 结构应为 max_heapified: A[Parent(i)] >= A[i],其中 Parent(i) 返回堆树的 i/2。

关于arrays - A.length 和 A.heap-size 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19059806/

相关文章:

algorithm - 找到使数组的所有元素都等于 0 的最小移动次数

java - 我应该使用哪种数据类型?

javascript - key 已定义,但它会警告 "Each child in a list should have a unique key prop"

C# 将没有属性名称的 JSON 数组解析为对象

javascript - 寻找数组的众数? JavaScript

algorithm - 概念上简单的线性时间后缀树结构

php - 使用 simplexml_load_string 时只返回数组的第一个元素

algorithm - 二叉堆插入,不懂for循环

php - 如何使用 PHP 创建自己的 pow 函数?

java - Java 中对象的动态类型转换