VB中如何给指定的数组排序??

给定数组A(1,3,9,2,7,5,6)用什么函数能给它排序?升序降序都行,请标明升序或降序,谢谢。

Private Sub Command4_Click()

    Dim t As clerk, i%, j%

    For i = 0 To n - 1

        For j = i To n - 2

            If a(i).vc > a(j + 1).vc Then

                t = a(i): a(i) = a(j + 1): a(j + 1) = t

            End If

        Next j

    Next i

    Picture2.Cls

    Picture2.Print "学号          姓名           VC            VB"

    Picture2.Print "---------------------------------------------"

    For i = 0 To n - 1

        Picture2.Print a(i).number, a(i).name, a(i).vc, a(i).vb

        Print

    Next i

End Sub

扩展资料

vb数组排序思路:

1、冒泡排序法:

位置相邻两数进行两两比较,在比较时如果发现前面的数比后面的数大,则进行交换,都比较完一轮后,把最大一个数放到最后,如此进行下去即可完成冒泡排序。

2、比较交换法

假设第一个数最小,然后第一个数依次与后面的每个数都进行比较, 若比较时发现后面的数比第一个数小, 则两数位置进行交换, 全部都比较完算一轮,每一轮比较完后,第一个数是最小的数,如此进行即可完成比较排序。

3、选择排序

假设第一个数最小,接着记下最小数所在的位置,然后将最小数依次与后面的每一个数都进行比较,若比较时发现后面的数比最小的数还小,则修改最小数所在位置,全部都比较完算一轮。

每一轮比较完后,最小数所在的位置是否跟假设的是同一个位置,若不是,则最小数与第一个数进行交换位置,如此进行即可完成选择排序。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-25
这个就没有什么函数了吧,排序的算法很多.要这种给定的数组只有几个元素的,用最笨的方法就行了,那就是一个一个比较,如果边比较代码都不想写的话还有一个办法那就是把这些元素全部加到一个listbox控件里,设置Sorted属性=true则自动排好序了,想要降序反过来输出就行了.注意listbox的SORTED属性是只读的要在过程中改变排序方式可以使用MSHFlexGrid控件的sort属性支持多种排序方式.
第2个回答  推荐于2017-09-20
(一)选择排序法(降序为例)
Private Sub rank(n As Integer, a() As Long)
For i = 1 To n - 1
For j = i + 1 To n
If a(j) > a(i) Then t = a(i): a(i) = a(j): a(j) = t
Next j
Next i
End Sub
优化后的程序:
Private Sub rank(n As Integer, a() As Long)
For i = 1 To n - 1
tmax = i
For j = i + 1 To n
If a(j) > a(tmax) Then tmax = j
Next j
If tmax <> i Then t = a(i): a(i) = a(tmax): a(tmax) = t
Next i
End Sub

(二)冒泡排序法(升序为例)
Private Sub rank(n As Integer, a() As Long)
For i = 1 To n - 1
For j = n To i + 1 Step -1
If a(j - 1) > a(j) Then
t = a(j - 1): a(j - 1) = a(j): a(j) = t
End If
Next j
Next i
End Sub
优化后的程序:
Private Sub rank(n As Integer, a() As Long)
For i = 1 To n - 1
flag = 0
For j = n To i + 1 Step -1
If a(j - 1) > a(j) Then
t = a(j - 1): a(j - 1) = a(j): a(j) = t: flag = 1
End If
Next j
If flag = 0 Then Exit For
Next i
End Sub本回答被提问者采纳
第3个回答  2009-02-25
Private Sub Command1_Click()
a = Array(1, 3, 9, 2, 7, 5, 6)
For i = 0 To UBound(a)
For j = i To UBound(a)
If a(j) < a(i) Then '升序,降序改为大于号
t = a(j)
a(j) = a(i)
a(i) = t
End If
Next
Next

For i = 0 To UBound(a)
Print a(i)
Next
End Sub
第4个回答  2009-02-25
写个函数,冒个泡
相似回答