当前位置:编程学习 > VB >>

关于VB数组 "冒泡排序法的疑问"{肯请前辈解答}

--------------------编程问答-------------------- a(9)怎么会有i=0 to 9? --------------------编程问答--------------------     For i = 0 To 9 
        For j = i+1 To 9
--------------------编程问答--------------------     For i = 0 To 8 
        For j = i + 1 To 9
            If a(i) < a(j) Then
                 t = a(i)
                 a(i) = a(j)
                 a(j) = t 
            End If
        Next j 
    Next i 
             --------------------编程问答-------------------- 楼主还没有理解冒泡排序的算法
仔细琢磨琢磨吧 --------------------编程问答-------------------- '问题一:for j=0 to 8-i改为for j=0 to 8也可以正常实现排序 
Re:for j=0 to 8-i这样写完全是为了效率,循环次数减少,你改为for j=0 to 8循环次数增加,效率降低.功能同样可以实现.
'问题二:如果将上面一句改为for j=0 to 8那看再上在一句for i=0 to 9看起貌似没任何联系了 
Re:问题二同问题一有联系,理解了便知道.
'问题三:事实证明既使将for j=0 to 8-i 改为for j=0 to 8程序功能正常,但for i=0 to 9一删除就排不了序了,很疑惑.
Re:你当前用的算法 需要两层循环来遍历所以元素 你删除了一层,遍历不了所有元素,当然排序也无从谈起...

还有就是:a(9)怎么会有i=0 to 9? --------------------编程问答--------------------
for i=0 to 9
    if i<>0 then
        if a(i)<a(i-1) then
            temp=a(i)
            a(i)=a(i-1)
            a(i-1)=temp
            i=i-2   '注意这一句
            if i<0 then i=0
        end if
    end if
next

单层循环完成冒泡,原帖:

http://www.m5home.com/bbs/dispbbs.asp?boardid=14&id=338&page=&star=1

21楼. --------------------编程问答--------------------
引用 6 楼 myjian 的回复:
VB codefor i=0to9if i<>0thenif a(i)<a(i-1)then
            temp=a(i)
            a(i)=a(i-1)
            a(i-1)=temp
            i=i-2'注意这一句if i<0then i=0endifendifnext
单层循环完成冒泡,原帖:

http://www.m5home.com/bbs/dispbbs.asp?boardid=14&id=338&page=&star=1

21楼.

老欺负小朋友 --------------------编程问答--------------------
引用 6 楼 myjian 的回复:
VB codefor i=0to9if i<>0thenif a(i)<a(i-1)then
            temp=a(i)
            a(i)=a(i-1)
            a(i-1)=temp
            i=i-2'注意这一句if i<0then i=0endifendifnext
单层循环完成冒泡,原帖:

http://www.m5home.com/bbs/dispbbs.asp?boardid=14&id=338&page=&star=1

21楼.

强哦~~~不知道还可不可以再优化... --------------------编程问答--------------------
引用 6 楼 myjian 的回复:
VB codefor i=0to9if i<>0thenif a(i)<a(i-1)then
            temp=a(i)
            a(i)=a(i-1)
            a(i-1)=temp
            i=i-2'注意这一句if i<0then i=0endifendifnext
 单层循环完成冒泡,原帖:

http://www.m5home.com/bbs/dispbbs.asp?boardid=14&id=338&page=&star=1

 21楼.

这本质上是插入排序,不是冒泡排序。
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,