二位数组排序优化求教高手,谢谢!!!
我下面的代码是进行排序的,但速度有点慢,还请高手指点一下:(代码也是从网上找到的)
DataCount=14或更多
UBound(dqsj, 1)大约有1500Sub BubbleSort(Number As Integer, DataCount As Integer, SmallToBig As Boolean, ds As Integer)
  Dim First     As Long, Last       As Long
  Dim ii     As Long, JJ       As Long, KK       As Long
  '定义一个可以保存一维多数据的临时变量
  Dim Temp()     As String
  
  First = LBound(dqsj, 1)         '取得数组第1维上界
  Last = UBound(dqsj, 1)         '取得数组第1维下界——判断出来有多少数据
  ReDim Temp(UBound(dqsj, 1) - ds, DataCount)
  
  'II是负责循环数据个数[维数],JJ是内层循环
  For ii = First To Last - 1 - ds                 '冒泡排序法
          For JJ = ii + 1 To Last - ds - 1
                  If SmallToBig = True Then           '从小到大
                          If Val(dqsj(ii, Number)) > Val(dqsj(JJ, Number)) Then
                                  '记录第JJ个数据
                                  For KK = 0 To DataCount - 1
                                          Temp(ii, KK) = dqsj(JJ, KK)
                                  Next
                                  For KK = 0 To DataCount - 1
                                      dqsj(JJ, KK) = dqsj(ii, KK)
                                  Next
                                  '恢复数据
                                 For KK = 0 To DataCount - 1
                                          dqsj(ii, KK) = Temp(ii, KK)
                                  Next
                          End If
                  Else   '从大到小
                          If Val(dqsj(ii, Number)) < Val(dqsj(JJ, Number)) Then
                                  '记录第JJ个数据
                                  For KK = 0 To DataCount - 1
                                          Temp(ii, KK) = dqsj(JJ, KK)
                                  Next
                                  For KK = 0 To DataCount - 1
                                      dqsj(JJ, KK) = dqsj(ii, KK)
                                  Next
                                  '恢复数据
                                  For KK = 0 To DataCount - 1
                                          dqsj(ii, KK) = Temp(ii, KK)
                                  Next
                          End If
                  End If
          Next
  Next
  
  Call drwtxt(hdqwzy(), hdqwzx())  End Sub

解决方案 »

  1.   

    VB的速度有5秒钟左右,而C里面好像只有2秒,请高手帮助,谢谢
      

  2.   

    谢谢:
    我有一个数组:
    N=1500
    M=20
    DQSJ(N,M)我想把数组按照M(给定值,如2)的顺序(从达到小)从新排列数组,我想在2秒钟内完成,我上面的能够实现排序,但时间较长,求助大家能否实现较快速排序,谢谢!!!
      

  3.   


      “我想把数组按照M(给定值,如2)的顺序(从达到小)从新排列数组”是什么意思呀?
      是说:“DQSJ(0,0)、DQSJ(1,0)、DQSJ(2,0)、DQSJ(3,0)……DQSJ(1499,0)”按从大到小排列,
         “DQSJ(0,1)、DQSJ(1,1)、DQSJ(2,1)、DQSJ(3,1)……DQSJ(1499,1)”再按从大到小排列吗(与DQSJ(n,0)无关)?
      

  4.   

    谢谢Chen8013 :
    就是这个意思,还请帮助,谢谢!!!