VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 9860|回复: 7

[原创] 数据的各种排序方法比较及打乱次序

[复制链接]
 楼主| 发表于 2011-4-1 14:49:34 | 显示全部楼层 |阅读模式
本帖最后由 阳光宝宝 于 2011-4-1 14:54 编辑

程序: 排序.rar (6.93 KB, 下载次数: 833)
 楼主| 发表于 2011-4-1 15:03:25 | 显示全部楼层
本帖最后由 阳光宝宝 于 2011-4-1 15:05 编辑

Sums() 是用于排序的, Sumb()是备用的,加SendMessageFind是为了添加的数据不重复

经过多次测试,快速排序和希尔排序最快
回复 支持 反对

使用道具 举报

发表于 2011-4-1 21:02:06 | 显示全部楼层
感谢作者以及楼主,当然还有国家
回复 支持 反对

使用道具 举报

发表于 2011-4-2 13:27:32 | 显示全部楼层
生成数据最慢, 哈哈
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-2 14:45:24 | 显示全部楼层
本帖最后由 阳光宝宝 于 2011-4-2 14:46 编辑

生成数据很慢,可以改用其它办法,导入的功能大家可以自己去添加,我发这个帖主要是这几天在做的程序涉及到排序,所以学习一下各种排序,于是做了这个,同时分享给大家。

原程序使用时可以一次生成数据后不断的切换各种排序方法,不用清空后重新生成进行排序的,每次开始排序时用的都是备份的数组的数据

Igawk有时间,可以帮我或者说是帮大家改进改进啊,谢谢了
回复 支持 反对

使用道具 举报

发表于 2011-4-3 22:53:41 | 显示全部楼层
本帖最后由 Igawk 于 2011-4-3 23:19 编辑

回复 阳光宝宝 的帖子

Igawk有时间,可以帮我或者说是帮大家改进改进啊,谢谢了

p82.gif

程序及源码: temp.rar (5.62 KB, 下载次数: 752)
回复 支持 反对

使用道具 举报

发表于 2011-4-3 23:20:31 | 显示全部楼层
方法二 代码:

  1. Private Sub Command1_Click()
  2.     Dim i As Long, z As Long, N As Long
  3.     Dim j As Long, j1 As Long, j2 As Long
  4.     T = timeGetTime
  5.     Randomize
  6.     '
  7.     Sumb(0) = 99999 * Rnd + 9
  8.     Sums(0) = Sumb(0)
  9.     N = 0
  10.     For i = 1 To UBound(Sums)
  11. Lab1:
  12.         z = 99999 * Rnd + 9
  13.         '二分插入排序
  14.         j1 = 0: j2 = N
  15.         Do Until j1 > j2
  16.             j = (j1 + j2) \ 2
  17.             If z = Sums(j) Then GoTo Lab1
  18.             If z < Sums(j) Then j2 = j - 1 Else j1 = j + 1
  19.         Loop
  20.         N = N + 1
  21.         If N > j1 Then CopyMemory Sums(j1 + 1), Sums(j1), (N - j1) * 4
  22.         Sums(j1) = z  '已排序
  23.         Sumb(i) = z   '未排序
  24.     Next i
  25.     List1.Clear
  26.     List1.Visible = False
  27.     For i = 0 To N
  28.         List1.AddItem Sumb(i)
  29.     Next i
  30.     List1.Visible = True
  31.     Label1 = "共产生不重复数据:" & N + 1 & " 项, 用时" & timeGetTime - T & "ms"

  32. End Sub

复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-4-4 13:39:11 | 显示全部楼层
你的代码还真是快,还让我第一次看到if then else 可以合并一行写,以前只知道if then可以写一行,非常感谢

点评

从比尔盖兹的BASICA开始就可以这样写了  发表于 2011-4-4 15:20
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-8-19 22:04

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表