VB中数组的降序排列

Option Base 1
Private Sub Sort(a() As Integer)
Dim Start As Integer
Dim Finish As Integer, i%, j%, t%
Start = LBound(a)
Finish = UBound(a)
Sum = 0
For i = Finish To 2 Step -1
For j = 1 To Finish - 1
If a(j) < a(j + 1) Then
t = a(j + 1)
a(j + 1) = a(j)
a(j) = t
End If
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim arr
arr = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text))
Sort arr
Text1.Text = arr(1)
Text2.Text = arr(2)
Text3.Text = arr(3)
Text4.Text = arr(4)
End Sub
请高手看一下上面的那一段代码哪里有问题?为什么无法运行?先谢谢了!
Option Base 1
Private Sub Sort(a() As Integer)
Dim Start As Integer
Dim Finish As Integer, i%, j%, t%
'Start = ?(a)
'Finish = ?(a)
'Sum = ?
'For i = ? To 2 Step -1
' For j = 1 To ?
' If a(j) ? a(j + 1) Then
t = a(j + 1)
a(j + 1) = a(j)
a(j) = t
End If
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim arr
arr = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text))
'Sort ?
Text1.Text = arr(1)
Text2.Text = arr(2)
Text3.Text = arr(3)
Text4.Text = arr(4)
End Sub
以上是原题目的代码,请高手看看,解答一下,再次感谢!

Option Base 1
Private Sub Sort(a())
Dim Start As Integer
Dim Finish As Integer, i%, j%, t%
Start = LBound(a)
Finish = UBound(a)
For i = Finish - 1 To 2 Step -1
For j = 1 To i
If a(j) < a(j + 1) Then
t = a(j + 1)
a(j + 1) = a(j)
a(j) = t
End If
Next j
Next i
End Sub
Private Sub Command1_Click()
Dim arr()
arr = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text))
Sort arr
Text1.Text = arr(1)
Text2.Text = arr(2)
Text3.Text = arr(3)
Text4.Text = arr(4)
End Sub

注:原题目有错
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-03
在使用array函数时,如果要赋值的话,必须先定义个变体形数组变量(即dim arr()),你定义的是个变量,不是数组变量。dim arr 改成 dim arr()
我们在调用过程时要注意传给的形参类型要保持和实参类型一致,a() As Integer,看到了吧,你的这个是整形,实参是个变体形,dim arr(),所以发生了数组未定义或类型不符的错误提示,把Private Sub Sort(a() As Integer)
改成Private Sub Sort(a()),传址时就不会发生错误了

2个错误,注意到了吗
第2个回答  2010-01-03
参考答案:
采用冒泡法对数组P(N)进行降序排列.
For I = 1 To N - 1
JHBZ = 0 '数据是否交换的标志,凡发生交换就置JHBZ=1,否则为0.
For J = 1 To N - I
If P(J) < P(J + 1) Then
T = P(J)
P(J) = P(J + 1)
P(J + 1) = T
JHBZ = 1
End If
Next J
If JHBZ = 0 Then Exit For
Next I