试题

试题 试卷

logo

题型:综合题 题类:模拟题 难易度:困难

浙江省杭州市2015年高考信息技术模拟卷10

下列VB程序的功能是:程序运行时,单击命令按钮Commandl后,产生10个[1,999]范围内互不相同的随机整数,依次显示在列表框List1中,然后将它们按从小到大的顺序排序,排序结果显示在列表框List2中。

数组a用于存储产生的10个随机整数,函数f(x)用于判断随机整数x与已生成的整数是否有重复,若有重复则返回True,否则返回False。

(1)、虚线框内程序段所采用的排序算法名称是。(填:冒泡排序/选择排序)
(2)、在程序(1)和(2)划线处,填入适当的语句或表达式,把程序补充完整。

Dim a(1 To 10) As Integer

Function f(x As Integer) As Boolean   

       ′代码略

End Function

Private Sub Commandl_Click()

Dim n As Integer                          ′n用于统计已经产生的随机整数个数

Dim i As Integer.j As Integer

Dim x As Integer.k As Integer

Randomize                                   ′初始化Rnd函数

n=0

List1.Clear                                 ′清除列表框中内容

List2.Clear

Do While n<10

    x=Int(Rnd*999)+1                        ′产生[1,999]范围内的随机整数

    If Not f(x) Then

       n=n+1

           a(n)=x

List1.AddItem Str()

    End If

Loop

For i=1 To 9                                  ′进行排序

For j=10 To i+1

        If a(j)<a(j-1) Then

            k=a(j):a(j)=a(j-1):a(j-1)=k

        End If

    Next j   

Next i 

For i=1 To 10

    List2.AddItem Str(a(i))

Next i

End Sub

举一反三
二叉树是每个结点最多有两个子树的树结构,如值为9的结点有两个子树6和8,值为6的结点有两个子树5和3。若设二叉树的深度为h,则除第h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边,这就是完全二叉树。现要构造大根堆,堆是一棵顺序存储的完全二叉树,大根堆又是一种特殊的堆,它的特征是每个双亲结点的值都不小于其孩子结点的值。如下图所示,值为9的结点是6和8的双亲结点,而6和8分别是9的左孩子和右孩子;同理,6是5和3的双亲结点,而5和3分别是6的左孩子和右孩子……

假如我们用数组表示上述大根堆:

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),故无需做交换操作。此时新元素已经放到了正确的位置,新的大根堆构造完成,上移行动结束。

返回首页

试题篮