| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3096 人关注过本帖
标题:VB做冒泡排序,数度好慢,怎么样优化可以提高速度?谢谢
只看楼主 加入收藏
huangjunxing
Rank: 1
等 级:新手上路
帖 子:49
专家分:0
注 册:2014-8-13
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
VB做冒泡排序,数度好慢,怎么样优化可以提高速度?谢谢
VB做冒泡排序,数度好慢,怎么样优化可以提高速度?谢谢
Dim i, j As Integer
Dim t As Single
For i = 1 To 30000 - 1
For j = i + 1 To 30000
If paix(i) > paix(j) Then
t = paix(i)
paix(i) = paix(j)
paix(j) = t
End If
Next j
Next i
搜索更多相关主题的帖子: VB 冒泡排序 怎么样 优化 速度 
2017-10-08 22:22
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:941
专家分:5244
注 册:2015-8-10
收藏
得分:7 
http://tieba.baidu.com/p/3995235839
你可以看看这个。具体不太清楚。
2017-10-09 09:19
ZHRXJR
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:125
帖 子:1034
专家分:5519
注 册:2016-5-10
收藏
得分:7 
你的这个30000数组 用 冒泡排序法、插入排序法、Shell排序法测试了一下,冒泡排序法耗时11秒,插入排序法耗时35秒,Shell排序法耗时22秒,其他没有测试,看来还是 冒泡排序法 比较快。
我的系统是 W7 CPU I7。

[此贴子已经被作者于2017-10-9 14:09编辑过]


请不要选我!!!
2017-10-09 14:07
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:7 
用选择法排序,可减少交换次数,速度可提高一倍。
我记得冒泡法排序是相邻的两个数比较,逐步交换,最终将最小的数(针对从小到大排序而言)从下面冒上来的。题主的排序是每次扫描到最小的数和当前顶层数据交换,这其实是选择法排序的一种变种,不是冒泡。
两种代码如下:
程序代码:
Private Sub Command2_Click()
  '选择法排序
  Dim t As Long, i As Integer, j As Integer, t1 As Single, paixu(30000) As Single
  For i = 0 To 30000
    paixu(i) = px(i)
  Next
  t = timeGetTime
  For i = 0 To 29999
    k = i
    For j = i + 1 To 30000
      If paixu(k) > paixu(j) Then k = j
    Next
    If k <> i Then
      t1 = paixu(i)           '每次选择最小的数和当前顶层的数交换
      paixu(i) = paixu(k)
      paixu(k) = t1
    End If
  Next
  MsgBox timeGetTime - t
End Sub

Private Sub Command3_Click()
  '冒泡法排序
  Dim t As Long, i As Integer, j As Integer, t1 As Single, paixu(30000) As Single
  For i = 0 To 30000
    paixu(i) = px(i)
  Next
  t = timeGetTime
  For i = 0 To 29999
    For j = 30000 To i + 1 Step -1
      If paixu(j - 1) > paixu(j) Then
        t1 = paixu(j - 1)                '每次相邻的两个数比较,逐步将最小的数交换到前面
        paixu(j - 1) = paixu(j)
        paixu(j) = t1
      End If
    Next
  Next
  MsgBox timeGetTime - t
End Sub
2017-10-10 04:02
快速回复:VB做冒泡排序,数度好慢,怎么样优化可以提高速度?谢谢
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041607 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved