湖南省永州市委书记:VB编程:选择法及冒泡法排序数组

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 06:16:33
排序题(要求掌握选择法及冒泡法两种方法、升序及降序)。要求使用随机数,给一个含10个元素的数组赋值,值的大小在50到100之间,赋值后显示组数各元素;然后从小到大排序,排序后,再次用Print方法显示组数各元素。
如 :排序前:5 6 7 1 3 2 4 8 9 0
排序后:0 1 2 3 4 5 6 7 8 9
能两种方法都用的最好.

自己复制一下,加上按钮、文本框控件。

Dim RNDDATA(1 To 15) As Integer '定义窗体级别的数组变量
Private Sub cmdRnd_Click()
txtRndData.Text = "" '清除输入区
txtOutPut.Text = "" '清除输出区
Randomize
Dim intindex As Long
For intindex = 1 To 15
'填充随机数,并使用Cint强制转换为整数类型
RNDDATA(intindex) = CInt(100 * Rnd + 1)
'vbCrlf为VB常数,表示回车换行
txtRndData.Text = txtRndData.Text & RNDDATA(intindex) & vbCrLf
Next intindex
End Sub
Private Sub cmdArray_Click()
Dim i As Long
Dim j As Long
Dim iMin As Integer
Dim iTemp As Integer
For i = 1 To 14 '15个数进行14轮比较
iMin = i '第一轮比较的时候,假设第i个元素最小
'在数组剩下后面的数字中选择出最小的数(i到15)
For j = i + 1 To 15
If RNDDATA(j) < RNDDATA(iMin) Then iMin = j
Next j
'i到15中的最小的数,与第i个元素进行交换
iTemp = RNDDATA(i)
RNDDATA(i) = RNDDATA(iMin)
RNDDATA(iMin) = iTemp
Next i
'显示排序的结果
txtOutPut.Text = ""
For i = 1 To 15
txtOutPut.Text = txtOutPut.Text & RNDDATA(i) & vbCrLf
Next i
End Sub
Private Sub cmdExit_Click()
Unload Me
End
End Sub

Option Explicit
Private Sub Form_Click()
Const N = 10
Dim a(1 To N) As Integer, i%, j%, k%, t%
Randomize
Print "排序前:";
For i = 1 To N
a(i) = Int(Rnd * 51) + 50
Print a(i);
Next i
For i = 1 To N - 1
k = i
For j = i + 1 To N
If a(j) < a(k) Then k = j
Next j
t = a(i): a(i) = a(k): a(k) = t
Next i
Print
Print "排序后:";
For i = 1 To N
Print a(i);
Next i
Print
End Sub

VB菜鸟也会啊,可是我就是不会,哈哈!其实不难