VB里 我给出10个数进行大小排列。但是我现在只做到了10个数选出最大的数求大神帮我详解接下来我该怎么做

如题所述

我给你推荐一种简单的交换排序法。
如果如下为数据列arr(6)={A,B,C,D,E,F}(用字母代替,方便叙述)
从第一个数开始往下循环比较,总是将大的数替换到前面的位置,从大到小排序流程如下:
(1)arr(0)跟其余所有的数据挨个比较,把大的数换到arr(0),
arr(0)跟arr(1)比较,如果arr(0)>=arr(1),则进行下一个比较,如果arr(0)<arr(1)则将arr(0)和arr(1)互换;
arr(0)跟arr(2)比较,如果arr(0)>=arr(2),则进行下一个比较,如果arr(0)<arr(2)则将arr(0)和arr(2)互换;
....
直到比较完所有的数,此时arr(0)是最大的数了。
(2)arr(1)跟余下的数挨个比较,把大的数换到arr(1),最后第二大数就被换到arr(1)
....
(3)一直比较到arr(最后一位)
得到的数列就为一个从大到小的数列。
具体代码如下
dim arr()= new integer()={12,33,22,19,47,65,99}定义源数组
dim i,j as integer定义循环变量
dim count as long定义数组个数
count = Ubound(arr)-Lbound(arr)+1获取数组个数
for i = 0 to count-1
for j = i to count-1
if arr(i)<arr(j) then把大的数交换到前面
temp = arr(i)把小的数储存起来
arr(i)=arr(j)把大的数赋于前面的arr(i)
arr(j)=temp
end if
nextj
next i
这个时候你得到的数组就是一个从大到小的数组了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-15

直接调用下面的排序函数,传递你的arr数组,返回的就是排序完成的数组。

Dim arrf() As Double = BubbleSortF(arr)

 

arrf()就是经过宠大到小排序的数组。

第2个回答  2013-09-15
使用冒泡排序法
第3个回答  2013-09-15
Private Sub Command1_Click()
    Dim i As Integer
    Dim intMyArray(0 To 4) As Integer
    
    intMyArray(0) = 1
    intMyArray(1) = 5
    intMyArray(2) = 4
    intMyArray(3) = 1
    intMyArray(4) = 3
    
    If MySort(intMyArray()) Then
        
        For i = 0 To UBound(intMyArray)
            Print intMyArray(i)
        Next
    Else
        MsgBox "排序失败", vbExclamation, "提示"
    End If
    
End Sub
Private Function MySort(intArray() As Integer) As Boolean
    Dim i      As Integer, j As Integer
    Dim intTmp As Integer
    
    On Error GoTo ErrLab
    For i = 0 To UBound(intArray) - 1
        For j = 0 To UBound(intArray) - i - 1
            If intArray(j) > intArray(j + 1) Then
                intTmp = intArray(j)
                intArray(j) = intArray(j + 1)
                intArray(j + 1) = intTmp
            End If
        Next
    Next
    MySort = True
ErrLab:
    If Err.Number <> 0 Then
        MySort = False
    End If
End Function