vb冒泡排序函数

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值