用VB排列列表框的数组(从小到大排列)

单击“产生随机数”按钮时,产生50个100~999之间的随机整数赋给一个数组,再将数组中的元素显示于列表框list1中,单击“从小到大排列”按钮时,将数组中的元素从小到大排序,排序后的结果显示于列表框list2中。

Private Sub cmdMake_Click()
Dim i As Integer
Dim sngElement As Single
lstUnsorted.Clear ' 将列表框置空
Randomize
' 随机生成MAXPLAYER 个无序元素
For i = 1 To MAXPLAYER
' 产生随机数,乘以10 后进行四舍五入,结果保留2 位小数
sngElement = Round((Rnd() * 10), 2)
' 将产生的随机数添加到列表框中
lstUnsorted.AddItem sngElement
Next
' 设置插入排序按钮可用
cmdInsSort.Enabled = True
End Sub Private Sub cmdInsSort_Click()
Dim aryPlayer(MAXPLAYER) As Single
Dim i As Integer, j As Integer
' 将无序列表中的数据读入排序数组中
For i = 1 To MAXPLAYER
aryPlayer(i) = lstUnsorted.List(i - 1)
Next
' 初始状态下,数组的第1 个元素被看作是有序的部分
' 从第2 个元素起,依次将其插入到前面的有序部分
For i = 2 To MAXPLAYER
' 将第i 个元素的值赋给哨兵
aryPlayer(0) = aryPlayer(i)
' 以下代码从前向后将有序部分大于哨兵的元素后移
j = i - 1
Do While aryPlayer(j) > aryPlayer(0)
aryPlayer(j + 1) = aryPlayer(j)
j = j - 1
Loop
' 第j 个元素不大于哨兵
' 则将哨兵(即第i 个元素)插在第j 个元素后
aryPlayer(j + 1) = aryPlayer(0)
Next
' 将排序后的数组添加到排序列表中
lstInsSort.Clear
For i = 1 To MAXPLAYER
lstInsSort.AddItem aryPlayer(i)
Next
End Sub
“插入排序”按钮的参考代码如下,其中,“哨兵”由aryPlayer (0)元素
充当。
温馨提示:答案为网友推荐,仅供参考
相似回答