题型:单选题 题类:常考题 难易度:困难
浙江省“温州十五校联合体”2018-2019学年高二下学期信息技术期中考试试卷
i = 0: j = 1
Do While j <= 5
If a(j) <> 0 Then i = i + 1: a(i) = a(j)
j = j + 1
Loop
For j = i + 1 To 5
a(j) = 0
Next j
数组元素a(1)到a(5)的值依次为“0,20,0,4,31”,执行该程序段后,a(1)~a(6)各元素的值依次为( )
原始数据 | 24 | 27 | 16 | 15 | 24 | 18 |
第一遍 | 27 | 24 | 16 | 15 | 24 | 18 |
第二遍 | ||||||
第三遍 | 27 | 24 | 24 | 15 | 16 | 18 |
第四遍 | 27 | 24 | 24 | 18 | 16 | 15 |
第五遍 | 27 | 24 | 24 | 18 | 16 | 15 |
假如我们用数组表示上述大根堆:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
9 |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
现有一算法把一个无序数组改造成大根堆。例如:我们在上图的大根堆中再增加一个值为8的新元素,如下图所示。
数组存储为:
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
6 |
8 |
5 |
3 |
4 |
7 |
2 |
1 |
8 |
具体操作方法如下:
第一步:因为a(10)大于它的双亲结点a(5),故需交换a(10)和a(5)的值;
数组存储为:
第二步:因为a(5)大于它的双亲结点a(2),故需交换a(5)和a(2)(t)值;
数组存储为:
a(1) |
a(2) |
a(3) |
a(4) |
a(5) |
a(6) |
a(7) |
a(8) |
a(9) |
a(10) |
9 |
8 |
8 |
5 |
6 |
4 |
7 |
2 |
1 |
3 |
第3步:因为a(2)不大于它的双亲结点a(1),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。
试题篮