二位数组排序速度优化求教高手,谢谢!!!

msdn165168 2008-02-29 09:10:42
二位数组排序优化求教高手,谢谢!!!
我下面的代码是进行排序的,但速度有点慢,还请高手指点一下:(代码也是从网上找到的)
DataCount=14或更多
UBound(dqsj, 1)大约有1500

Sub 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
...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdn165168 2008-03-05
  • 打赏
  • 举报
回复
谢谢Chen8013 :
就是这个意思,还请帮助,谢谢!!!
舉杯邀明月 2008-03-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 msdn165168 的回复:]
谢谢:
我有一个数组:
N=1500
M=20
DQSJ(N,M)

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

  “我想把数组按照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)无关)?

Alices 2008-03-02
  • 打赏
  • 举报
回复
开玩笑是开玩笑,也给人家想一下方法啊~
用户 昵称 2008-03-01
  • 打赏
  • 举报
回复
4楼的真是高人,真的是这样
msdn165168 2008-02-29
  • 打赏
  • 举报
回复
VB的速度有5秒钟左右,而C里面好像只有2秒,请高手帮助,谢谢
qiu5208 2008-02-29
  • 打赏
  • 举报
回复
最简单的方法
加个进度条,感觉上能快上好多。
东方之珠 2008-02-29
  • 打赏
  • 举报
回复
冒泡排序法是最慢的一种。用其他方法吧:比如,折半排序法等。
msdn165168 2008-02-29
  • 打赏
  • 举报
回复
谢谢:
我有一个数组:
N=1500
M=20
DQSJ(N,M)

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

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧