首页 > 试题广场 >

对于序列( 12 , 13 , 11 , 18 , 60 ,

[单选题]

对于序列( 12 13 11 18 60 15 7 19 25 100 ),用筛选法建堆,必须从值为 ________ 的数据开始建初始堆


  • 100
  • 12
  • 60
  • 15
若元素地址从零开始,则n/2-1。若由1开始,则n/2。如果题目中未说明由零开始或是1开始,默认由零开始。
编辑于 2018-12-12 23:49:50 回复(0)
更多回答
有n个元素的序列,若使用筛选法建堆,则从位置为n/2取下整的元素开始建堆
发表于 2017-05-23 17:44:10 回复(11)
所谓建初始堆意思是从这里开始调整
发表于 2017-08-05 00:32:45 回复(2)
筛选建堆就是从下至上的下滤法建堆,将序列按照顺序组成一棵二叉树,从叶子节点到根节点,依次进行下滤操作;
但是很明显,叶子节点不需要下滤,所以就是从第一个非叶子节点开始。
12
13 11
18 60 15 7
19 25 100
所以其实就是从60这个节点开始了,因为加粗的几个节点都已经不用下滤了
发表于 2017-08-06 17:15:24 回复(0)
筛选法建堆:将原数组按顺序排成完全二叉树,然后从下往上,从右到左,找到第一个非叶子节点,从这个节点开始调整
发表于 2018-06-08 12:56:57 回复(0)
这里要介绍的是筛选法建堆,它可以在线性时间复杂度下完成建堆。以最大堆为例介绍具体操作过程:
  1. 首先将N个数据元素存入一个一维数组,并把这个数组视作一棵完全二叉树。
  2. 从二叉树的最后一个非叶结点开始用从上向下过滤的方法调整以该非叶结点为根节点的二叉树为最大堆。
  3. 对前面的结点依次执行2的操作直到根结点执行完成为止。此时这棵二叉树就调整为了一个最大堆。

发表于 2018-06-05 10:16:15 回复(1)
从中间元素开始建堆
发表于 2017-05-22 10:38:20 回复(0)
用筛选法建堆,从n/2元素开始建堆
发表于 2022-02-20 15:41:57 回复(0)
筛选法就是开始按现有的顺序从上到下,从左到右放到一个完全二叉树里面。
然后把这个树调节成堆。调节的时候从最后一个有儿子的节点开始。 也就是从下往上,从右往左找,找到的第一个有孩子的节点开始。依次把各个节点及下面的孩子组成的树调节成堆
发表于 2017-09-08 16:23:13 回复(0)
原本的序列依次放到堆中,然后从下往上调整,从第一个有子节点的点开始 即n/2个 如果是0开始的数组下标,n/2-1
发表于 2022-05-14 13:24:10 回复(0)
发表于 2023-02-06 15:27:53 回复(0)
所谓的开始建堆 就是开始调整的位置 是从n/2的位置开始的
发表于 2022-05-23 21:31:28 回复(1)
筛选法建堆:有n个元素的序列,则从位置为n/2位置向下取整的元素开始建堆;
即:从最后一个结点的父亲结点开始,所以是n/2;
编辑于 2021-08-30 16:57:36 回复(0)
建堆makeHeap函数是借用向下调整运算adjustDown实现的,adjustDown(v,first,last)的作用是将以向量v中索引为first的元素为根的树调整为堆。叶子结点不需要调整,因此从索引中最大的第一个非叶节点开始adjustDown。详细代码见《data structure with c++ using STL》
发表于 2018-10-30 14:55:56 回复(1)
筛选建堆从序列的第一个非叶节点开始进行操作,上面序列建立小根堆过程如下:

编辑于 2018-02-09 16:16:35 回复(0)
从第一个非叶子节点开始建堆。因为后面的都是叶子节点,被筛选掉了。
发表于 2017-08-11 15:39:58 回复(0)
筛选法建堆,对每个有孩子的节点进行下滤操作
发表于 2023-11-16 09:45:31 回复(0)
筛选法建堆从中间的那个元素开始
发表于 2023-06-08 16:05:19 回复(0)
是是是
发表于 2023-03-05 10:50:29 回复(0)
若元素地址从零开始,则n/2-1。若由1开始,则n/2。如果题目中未说明由零开始或是1开始,默认由零开始。
发表于 2023-01-09 15:28:30 回复(0)