用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个数中最小的数,和其下标,那么怎么求第二小的数
展开
 我来答
xhwnus
2010-11-30 · TA获得超过816个赞
知道小有建树答主
回答量:577
采纳率:0%
帮助的人:396万
展开全部
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
mdoom
2010-11-30 · TA获得超过2923个赞
知道大有可为答主
回答量:1370
采纳率:0%
帮助的人:692万
展开全部
其实用排序就最简单了,由小到大排好序,输出第二个最小数就可以了。
按你的方法不用排序也可以,但要用多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
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式