回 帖 发 新 帖 刷新版面

主题:求数组前五个最大值

请问如何实现在一个数组中,想求其数组中的前五个最大值数据,比如有个整型数组中有10个数据分别为:1,12,23,34,15,26,17,80,10,60。求出的前五个数据的最大值为:80,60,34,26,23。请给出实现其功能的具体代码,谢谢!!!急用

回复列表 (共2个回复)

沙发

和排序程序基本一样,只是把外循环或内循环(具体改那个因排序方法而定)的次数改为5就行了

板凳

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

以上方法适合于整数数组

我来回复

您尚未登录,请登录后再回复。点此登录或注册