主题:求数组前五个最大值
流星星
[专家分:0] 发布于 2008-01-11 16:48:00
请问如何实现在一个数组中,想求其数组中的前五个最大值数据,比如有个整型数组中有10个数据分别为:1,12,23,34,15,26,17,80,10,60。求出的前五个数据的最大值为:80,60,34,26,23。请给出实现其功能的具体代码,谢谢!!!急用
回复列表 (共2个回复)
沙发
老大徒伤悲 [专家分:29120] 发布于 2008-01-11 17:13:00
和排序程序基本一样,只是把外循环或内循环(具体改那个因排序方法而定)的次数改为5就行了
板凳
家人 [专家分:6760] 发布于 2008-01-13 11:11:00
Function GetSum(V() As Long, ByVal n As Integer) As Long
'V要求和的数组,前n位之和
Dim i As Long
Dim k() As Long
Dim minValue As Long, maxValue As Long
Dim tmp As Long
minValue = V(LBound(V))
maxValue = minValue
For i = LBound(V) To UBound(V)
If V(i) < minValue Then minValue = V(i)
If V(i) > maxValue Then maxValue = V(i)
Next i
ReDim k(minValue To maxValue)
For i = LBound(V) To UBound(V)
k(V(i)) = k(V(i)) + 1
Next i
For i = maxValue To minValue Step -1
Do While k(i) > 0 And n > 0
tmp = tmp + i
k(i) = k(i) - 1
n = n - 1
If n = 0 Then Exit For
Loop
Next i
GetSum = tmp
End Function
'测试:
Private Sub Command1_Click()
Dim lng(9) As Long
Dim i As Long
Randomize
For i = 0 To 9
lng(i) = Rnd * 10
Debug.Print lng(i);
Next
Debug.Print
Debug.Print GetSum(lng, 5)
End Sub
以上方法适合于整数数组
我来回复