二位数组排序优化求教高手,谢谢!!!
我下面的代码是进行排序的,但速度有点慢,还请高手指点一下:(代码也是从网上找到的)
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
我下面的代码是进行排序的,但速度有点慢,还请高手指点一下:(代码也是从网上找到的)
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
解决方案 »
- VB 删除checkbox选中的记录(任意的几条)的sql语句问题求助
- 任务管理器里应用程序选项卡里的状态栏如何获得??
- vb中画图问题
- 非常奇怪,FAQ中的访问加密共享文件夹的问题根本没解决,文不对题,怎么会放进去的?
- 如何用联合查询生成的语句生成新表?
- 数据类型问题
- 关于快捷方式
- 怎样中断一个存储过程?
- 如何注册*.ocx文件?李洪根(原谅直呼其名)老兄看到了请给个回复?
- 请教:Conflicting names were found in "C:\XXX\ABCD.frm",the name "ABCD" will be used.
- VB中Integer转Byte
- 才想起来COM+,请教啦,希望通过Internet访问总部的应用,能通过COM+实现吗?
我有一个数组:
N=1500
M=20
DQSJ(N,M)我想把数组按照M(给定值,如2)的顺序(从达到小)从新排列数组,我想在2秒钟内完成,我上面的能够实现排序,但时间较长,求助大家能否实现较快速排序,谢谢!!!
“我想把数组按照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)无关)?
就是这个意思,还请帮助,谢谢!!!