vb 二维数组中求第二小的元素

来源:百度知道 编辑:UC知道 时间:2024/09/24 09:34:54

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

排序就把数组原来 顺序打乱了。
我用傻瓜方法,
先求最小的数据,再求第二小的数据。

如果