本帖最后由 nsthy 于 2009-08-12 06:07:51 编辑

解决方案 »

  1.   

        For i = 0 To 9 
            For j = i+1 To 9
      

  2.   

        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 
                
      

  3.   

    '问题一: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?
      

  4.   

    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=121楼.