如果A [1 .. n]是最大堆,数组的第二个,第三个,第四个……最大元素在哪里?

[1]

[2] [3]

[4] [5] [6] [7]

===============>>#1 票数:0 已采纳

如您所知,第一个元素是最大值。 紧随其后的是其子节点2 * k和2 * k + 1。 因此,如果您基于1,则下一个数字的大小为2和3。

===============>>#2 票数:0

让我们这样-最大的元素在根。 谁是第二大和第三大候选人? Ans-> root的直接子代。 为什么? 因为root子级下的所有元素都小于root的子级。

同样,谁是第四大候选人? 第二和第三大元素的子元素,即从索引4到索引7的节点。

  ask by Tiago translate from so

未解决问题?本站智能推荐:

1回复

在堆排序中只有一个正确的答案吗?

如果从代表优先级队列的空堆开始,必须先按顺序插入数字,然后将其表示为二叉树,那么对此是否只有一个严格的答案? 我尝试了不同的Java堆生成器等,它们都给了我不同的答案。
1回复

堆排序-最大堆

我在[17,98,89,42,67,54,89,25,38]中有一个数字列表,该列表将从左到右插入一个空堆中。 产生的堆将是什么?
3回复

最大/最小堆树可以包含重复值吗?

我想知道是否允许最大或最小堆树具有重复值? 我一直试图通过在线资源找到有关这方面的信息是不成功的。
2回复

为什么我们通过堆而不是二进制搜索树进行排序?

可以在O(n logn)时间内从列表构造堆,因为将元素插入堆需要O(logn)时间并且有n个元素。 类似地,可以在O(n logn)时间内从列表构造二叉搜索树,因为将元素插入到BST中需要平均登录时间并且存在n个元素。 从最小到最大遍历堆需要O(n logn)时间(因为我们必须弹出n
1回复

堆排序-数组结构-C

我正在尝试从一个txt文件读取的char数组结构(按电话名称的字母顺序排序)进行Heapsort。 我的算法适用于整数,但是当我更改为'char'类型时,它不会显示任何结果或任何错误 因此,我真的不知道我的代码有什么问题。 请帮忙,我是新手。 我的txt文件 我的密码
1回复

堆排序,要使用的最小堆还是最大堆?

对于堆排序,如果我们想按升序对数组进行排序,那么堆应该以最大堆还是最小堆转换?
1回复

计算堆排序和插入排序中的复制和比较次数

我想计算算法进行比较的次数以及算法进行复制的次数。 这是我的代码,ps-等于比较数,ks-等于复制数。 我想问一下我是否计算了算法中的所有比较和所有复制? 感谢您的回答。
2回复

堆排序C-输出不正确

我正在尝试以升序为10个元素的数组实现堆排序。 我正在按照以下步骤操作- heap_sort(arr,size_array): 但是我的输出完全搞砸了。 我不知道我要去哪里。 这是我的输入- 我的build_max_heap输出- 我的排序数组与build
1回复

C:堆排序算法,删除和插入

因此,我将为类编写一个堆数据结构,并且应该仅使用插入和删除操作来实现堆排序。 它适用于较小的整数集(大小为10及以下)。 但是,当我输入大量数字(100+)时,结果仅是半排序的。 这是我的插入方法: 这是我的删除方法: 这是heapHndl。 我似乎无法弄清
1回复

一个数组是最大堆,但其反向不是最小堆?

我有一个我认为可以理解的问题,但正在寻求一些验证。 我知道,要成为最小堆,子项必须大于父项,并且要成为最大堆,父项必须大于子项。 如果是这样,这是否是对以下问题的有效答案: 创建一个包含5个元素的数组,该数组是最大堆,但反向数组不是最小堆。 A = [100,50,49,40,4