用VB求数组中第二小的数
Dima(4)AsIntegerDimi,min1,imin1AsIntegerFori=0To4a(i)=Text1(i).Textb(i)=Text2(i).Text...
Dim a(4) As Integer
Dim i, min1, imin1 As Integer
For i = 0 To 4
a(i) = Text1(i).Text
b(i) = Text2(i).Text
Next
min1 = a(0)
imin1 = 0
For i = 1 To 4
If min1 > a(i) Then
min1 = a(i)
imin1 = i
End If
Next
End Sub
求出了5个数中最小的数,和其下标,那么怎么求第二小的数 展开
Dim i, min1, imin1 As Integer
For i = 0 To 4
a(i) = Text1(i).Text
b(i) = Text2(i).Text
Next
min1 = a(0)
imin1 = 0
For i = 1 To 4
If min1 > a(i) Then
min1 = a(i)
imin1 = i
End If
Next
End Sub
求出了5个数中最小的数,和其下标,那么怎么求第二小的数 展开
2个回答
展开全部
Rem 思路(不用排序,排序还未必能求到次小值,因为可能会碰上几个值相同的):
Rem 先把第一个元素当成最小值和次小值,然后逐个比较数组的当前元素是否比现在得到的最小值小,如果是,那么把最小值赋值给次小值,把当前元素赋值给最小值
Rem 在以后的比较中,可能会碰到这样的元素,它比最小值大,但比现在得到的次小值还小,所以,得把个元素重新赋值给次小值
Private Sub Form_click()
Dim a(), min1, min2
Cls
ReDim a(4, 8)
'给二维数组a赋值的地方
a11 = LBound(a, 1): a12 = UBound(a, 1)
a21 = LBound(a, 2): a22 = UBound(a, 2)
Print "二维数组如下所示:"
For i = a11 To a12
For j = a21 To a22
a(i, j) = 10 + Int(90 * Rnd) '如果上边对数组赋值,就不要这句代码
Print a(i, j);
Next
Print
Next
min1 = a(a11, a21): min2 = a(a11, a21)
For i = a11 To a12
For j = a21 To a22
If a(i, j) < min1 Then min2 = min1: min1 = a(i, j)
If a(i, j) <> min1 And a(i, j) < min2 Then min2 = a(i, j)
Next
Next
Print "最小值是" & min1, "次小值是" & min2
End Sub
Rem 先把第一个元素当成最小值和次小值,然后逐个比较数组的当前元素是否比现在得到的最小值小,如果是,那么把最小值赋值给次小值,把当前元素赋值给最小值
Rem 在以后的比较中,可能会碰到这样的元素,它比最小值大,但比现在得到的次小值还小,所以,得把个元素重新赋值给次小值
Private Sub Form_click()
Dim a(), min1, min2
Cls
ReDim a(4, 8)
'给二维数组a赋值的地方
a11 = LBound(a, 1): a12 = UBound(a, 1)
a21 = LBound(a, 2): a22 = UBound(a, 2)
Print "二维数组如下所示:"
For i = a11 To a12
For j = a21 To a22
a(i, j) = 10 + Int(90 * Rnd) '如果上边对数组赋值,就不要这句代码
Print a(i, j);
Next
Next
min1 = a(a11, a21): min2 = a(a11, a21)
For i = a11 To a12
For j = a21 To a22
If a(i, j) < min1 Then min2 = min1: min1 = a(i, j)
If a(i, j) <> min1 And a(i, j) < min2 Then min2 = a(i, j)
Next
Next
Print "最小值是" & min1, "次小值是" & min2
End Sub
展开全部
其实用排序就最简单了,由小到大排好序,输出第二个最小数就可以了。
按你的方法不用排序也可以,但要用多2个变量。
Dim a(4) As Integer
Dim i, min1, imin1,min2,imin2 As Integer
For i = 0 To 4
a(i) = Text1(i).Text
b(i) = Text2(i).Text
Next
min1 = a(0)
min2=min1
imin1 = 0
imin2 = imin1
For i = 1 To 4
If min1 > a(i) Then
min2=min1
min1 = a(i)
imin2=imin1
imin1 = i
End If
Next
End Sub
按你的方法不用排序也可以,但要用多2个变量。
Dim a(4) As Integer
Dim i, min1, imin1,min2,imin2 As Integer
For i = 0 To 4
a(i) = Text1(i).Text
b(i) = Text2(i).Text
Next
min1 = a(0)
min2=min1
imin1 = 0
imin2 = imin1
For i = 1 To 4
If min1 > a(i) Then
min2=min1
min1 = a(i)
imin2=imin1
imin1 = i
End If
Next
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询