vb冒泡排序函数

    技术2022-05-11  71

    Sub   BubbleSort(List()   As   Long,   Number   As   Long,   DataCount   As   Long,   SmallToBig   As   Boolean)     '/蒋玉龙于2003-03-08晚0:36编制,数组排序功能/         '传递过来的数组,共2维,N组数据//根据第Number个数据信息排序//总共DataCount个数据信息     '例如:X(N,4)→共N组数据,每组4个数据信息,分为/N,0/N,1/N,2/N,4/     Dim   First   As   Long,   Last   As   Long     Dim   ii   As   Long,   JJ   As   Long,   KK   As   Long     '定义一个可以保存一维多数据的临时变量     Dim   Temp()   As   Long     ReDim   Temp(DataCount)     '***********************************************************     '调用方法     'Dim   List(0   To   3,   0   To   2)   As   Long     'Dim   II   As   Long     '     'List(0,   0)   =   15     'List(0,   1)   =   23   →用做排序     'List(0,   2)   =   62     '     'List(1,   0)   =   43     'List(1,   1)   =   53   →用做排序     'List(1,   2)   =   34     '     'List(2,   0)   =   46     'List(2,   1)   =   231→用做排序     'List(2,   2)   =   34     '     'List(3,   0)   =   12     'List(3,   1)   =   13   →用做排序     'List(3,   2)   =   22     '     'BubbleSort   List(),   2,   3,   False     '按照第2个信息排序,总共每维3组数据,从大到小     '***************************************************************     First   =   LBound(List,   1)   '取得数组第1维上界     Last   =   UBound(List,   1)   '取得数组第1维下界——判断出来有多少数据     'II是负责循环数据个数[维数],JJ是内层循环     For   ii   =   First   To   Last   -   1     '冒泡排序法             For   JJ   =   ii   +   1   To   Last                     If   SmallToBig   =   True   Then   '从小到大                             If   List(ii,   Number   -   1)   >   List(JJ,   Number   -   1)   Then                                     '记录第JJ个数据                                     For   KK   =   0   To   DataCount   -   1                                             Temp(KK)   =   List(JJ,   KK)                                     Next                                     For   KK   =   0   To   DataCount   -   1                                         List(JJ,   KK)   =   List(ii,   KK)                                     Next                                     '恢复数据                                     For   KK   =   0   To   DataCount   -   1                                             List(ii,   KK)   =   Temp(KK)                                     Next                             End   If                     Else   '从大到小                             If   List(ii,   Number   -   1)   <   List(JJ,   Number   -   1)   Then                                     '记录第JJ个数据                                     For   KK   =   0   To   DataCount   -   1                                             Temp(KK)   =   List(JJ,   KK)                                     Next                                     For   KK   =   0   To   DataCount   -   1                                         List(JJ,   KK)   =   List(ii,   KK)                                     Next                                     '恢复数据                                     For   KK   =   0   To   DataCount   -   1                                             List(ii,   KK)   =   Temp(KK)                                     Next                             End   If                     End   If             Next     Next     End   Sub 

    最新回复(0)