充值活动已开启,快来参与吧 关闭充值活动
当前位置: 高中信息技术 / 算法与程序设计 / 算法的程序实现 / 排序算法及程序实现
  • 1. 现需要对某企业大型招聘活动面试成绩进行排名,面试数据包含专业编号(整数,顺序编号)、专业名称、姓名(字母编写)和面试分。整理面试数据的要求是:先按专业编号从小到大排列;然后,同专业的面试者按面试成绩从大到小排列(同分同名次)。按上述要求,编写一个VB程序,功能如下:在列表List1中显示整理前的数据,单击“整理”按钮Command1,整理结果显示在列表框List2中,程序运行界面如图所示。

    1. (1) n个元素两两比较大小,需要比较的次数是
    2. (2) 请在划线处填入合适的代码。

      Const n=200      '报名人数

      Const nz=10       '专业数

      Dim zybh(1 To n) As Integer, zyname(1 To n) As String, sname(1 To n) As String, zymark(1 To n) As Integer

      Dim b(1 To nz) As Integer           '存储每个专业的人数

      Dim c(1 To nz) As Integer

      Dim d(1 To n) As Integer

      Dim q(1 To n) As Integer

      Private Sub Form_ Load()

          '本过程读取专业编号、专业名称、姓名和面试分的数据分别存储在数组zybh,zyname,sname, zymark中,并在List1中显示,代码略

      End Sub

      Private Sub Command1_ Click( )

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

          For i=1 To nz

              b(i)=0

          Next i

          For i=1 To n

              d(i)=0 : q(i)=0

          Next i

          For i=1 To n

              k= zybh(i)

              b(k)=b(k) + 1

          Next i

          k=1

          For i=1 To nz

              c(i)=k

              

          Next i

          For i=1 To n-1

              For j=i+1 To n

                 If zybh(i)= zybh(j) And zymark(i) < <> zymark(j) Then

                     If  Then

                         d(j)=d(j)+1

                     Else

                         d(i)=d(i)+1

                     End If

                 End If

              Next j

          Next i

          For i=1 To n

              j=0

              Do While

                  j=j+1

              Loop

              q(c(zybh(i))+d(i)+j)=i

          Next i

          For i=1 To n

              List2.AddItem "" & zybh(q(i)) & " " & zyname(q()) & " " & sname(q(i))& "" & zymark(q(i) & "" & d(q(i)) + 1

            Next i

      End Sub