【VB】将10个随机的两位数从大到小用选择法和冒泡法排序
PublicClassForm1PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventA...
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim x(5) As Integer Dim i As Integer For i = 0 To 5 x(i) = Int(Rnd() * 90 + 10) Next Label2.Text = "" For i = 0 To 5 Label2.Text &= x(i) & Space(2) Next End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, j, n, m, temp, imax As Integer Dim x(5) As Integer Dim flag As Boolean n = UBound(x) For i = 0 To 5 x(i) = Int(Rnd() * 90 + 10) Next Label2.Text = "" For i = 0 To 5 Label2.Text &= x(i) & Space(2) Next For i = 0 To n - 1 imax = i flag = True For j = i + 1 To n If x(j) < x(imax) Then flag = False imax = j End If Next j temp = x(i) x(i) = x(imax) x(imax) = temp If flag Then Exit For End If
Label3.Text &= "第" & i + 1 & "轮交换后:" For m = 0 To n Label3.Text &= x(m) & " "
Next Label3.Text &= vbCrLf
Next i
End Sub上面是随机数生成和选择法的代码,运行后,点击选择法按钮,随机数组会改变,怎么改代码能使随机数组生成后不改变,然后选择法的代码好像有点错误。。。。。
刚运行的时候是这样的。。。
选择法按了两次后出现这样。。。。
再按几次后出现这样。。。。。
为什么。。。。。。。。。。 展开
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i, j, n, m, temp, imax As Integer Dim x(5) As Integer Dim flag As Boolean n = UBound(x) For i = 0 To 5 x(i) = Int(Rnd() * 90 + 10) Next Label2.Text = "" For i = 0 To 5 Label2.Text &= x(i) & Space(2) Next For i = 0 To n - 1 imax = i flag = True For j = i + 1 To n If x(j) < x(imax) Then flag = False imax = j End If Next j temp = x(i) x(i) = x(imax) x(imax) = temp If flag Then Exit For End If
Label3.Text &= "第" & i + 1 & "轮交换后:" For m = 0 To n Label3.Text &= x(m) & " "
Next Label3.Text &= vbCrLf
Next i
End Sub上面是随机数生成和选择法的代码,运行后,点击选择法按钮,随机数组会改变,怎么改代码能使随机数组生成后不改变,然后选择法的代码好像有点错误。。。。。
刚运行的时候是这样的。。。
选择法按了两次后出现这样。。。。
再按几次后出现这样。。。。。
为什么。。。。。。。。。。 展开
1个回答
展开全部
Dim x(5) As Integer
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 0 To 5
x(i) = Int(Rnd() * 90 + 10)
Next
Label2.Text = ""
For i = 0 To 5
Label2.Text &= x(i) & Space(2)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j, n, m, temp, imax As Integer
Dim flag As Boolean
n = UBound(x)
For i = 0 To n - 1
imax = i
flag = True
For j = i + 1 To n
If x(j) < x(imax) Then
flag = False
imax = j
End If
Next j
temp = x(i)
x(i) = x(imax)
x(imax) = temp
If flag Then
Exit For
End If
Label3.Text &= "第" & i + 1 & "轮交换后:"
For m = 0 To n
Label3.Text &= x(m) & " "
Next
Label3.Text &= vbCrLf
Next i
End Sub
这样就可以
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i As Integer
For i = 0 To 5
x(i) = Int(Rnd() * 90 + 10)
Next
Label2.Text = ""
For i = 0 To 5
Label2.Text &= x(i) & Space(2)
Next
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i, j, n, m, temp, imax As Integer
Dim flag As Boolean
n = UBound(x)
For i = 0 To n - 1
imax = i
flag = True
For j = i + 1 To n
If x(j) < x(imax) Then
flag = False
imax = j
End If
Next j
temp = x(i)
x(i) = x(imax)
x(imax) = temp
If flag Then
Exit For
End If
Label3.Text &= "第" & i + 1 & "轮交换后:"
For m = 0 To n
Label3.Text &= x(m) & " "
Next
Label3.Text &= vbCrLf
Next i
End Sub
这样就可以
更多追问追答
追问
那冒泡法的话呢呢。。。。。
追答
冒泡法的例子很多,我也写过几个,你可以自己搜下改改就用了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询