当前位置: 高中信息技术 / 综合题
  • 1. (2021高三下·浙江开学考) 某分段排序算法描述如下:

    1)将原始数据按升序分成若干有序段。

    2)将第1段和第2段进行合并,使得合并后的数据依旧有序,得到新的有序段。

    3)将新的有序段再次和下一个有序段进行合并。

    4)重复上述操作,直到全部数据变成一个有序段为止,排序结束。

    如数据:1、3、9、4、5、7、2、6,第1段为1、3、9,第2段为4、5、7,将第1段和第2段合并,得到新的第1段为1、3、4、5、7、9。继续和下一段2、6进行合并,合并后段数变为1段,则排序结束。

    编写VB程序,实现分段排序功能:在文本框Text1中输入数据总量,单击“数据生成”按钮Command1后,在列表框List1中显示原始数据,然后单击“分段排序”按钮Command2,在列表框List2中显示排序后的结果。程序运行界面如图所示。

    请回答下列问题:

    1. (1) 若要清空列表框List1,下列代码正确的是(单选,填字母:

      A .List1.Clear / B .List1.List="" / C .List1.Text="" / D .List1.Caption="空白" )。

    2. (2) 实现分段排序功能的VB程序如下,请在划线处填入合适的代码。

      Dim a(1 To 1000) As Integer

      Dim n As Integer

      Private Sub Command1_Click()

      '输入数据总量n,随机生成n个数据保存在数组

      'a(1)~a(n)中,并在List1中显示数据,代码略

      End Sub

      Private Sub Command2_Click()

          Dim b(1 To 10000) As Integer

          Dim p1 As Integer, p2 As Integer, t1 As Integer, t2 As Integer

          Dim t As Integer, k As Integer, i As Integer, j As Integer

          p1 = 1

          t1 = leng(p1)

          p2 = p1 + t1

          Do While p2 <= n

              

              i = p1: j = p2: t = 1

              Do While i < p2 Or j < p2 + t2

                  If j >= p2 + t2 Or i < p2 And a(i) < a(j) Then

                      b(t) = a(i): i = i + 1

                  Else

                      b(t) = a(j): j = j + 1

                  End If

                  t = t + 1

              Loop

              For k = 1 To

                  a(k) = b(k)

              Next k

              t1 = t1 + t2

              

          Loop

          '在List2中输出数组a(i)的值,代码略

      End Sub

      Function Leng(ByVal p As Integer) As Integer

      '该函数返回数组a中数组下标p开始的升序有序段的长度,代码略

      End Function

    3. (3) 程序中加框处代码有错,请改正。

微信扫码预览、分享更方便