算法学习之冒泡排序法

以下为VBA代码
来源:《EXCEL VBA编程实战宝典》–第5章 程序结构控制

Sub BubbleSorted()
    Dim k As Integer
    Randomize
    With Worksheets("Sheet1")
    For k = 1 To 100
        .Cells(k, 1) = Int(Rnd * 10) + 1 '在第一列生成100个随机整数
    Next
    
    For i = 1 To 99
        For j = i + 1 To 100 '外循环第一轮赋值,内循环完,再外循环第二轮赋值
            If .Cells(i, 1) > .Cells(j, 1) Then  '按照从小到大的顺序排列
                t = .Cells(i, 1)
                .Cells(i, 1) = .Cells(j, 1)
                .Cells(j, 1) = t
            End If
        Next
    Next
    End With
End Sub

我理解版本的冒牌排序法:

i=1,j = 2 to 100

将位置1 上的数与余下的99个数(浮动的99个数)进行比较,较小的数可以坐上位置1,按照顺序,第2到第100位的选手,都有机会跟位置1的人进行PK。想象一下PRODUCE101时候的王位之争,只要有人来挑战,第一位必须应战。这期间,也许第一位早已不是当初第一个选择坐在这个位置上的人,但绝对是最小数,就算没有亲自和每个数进行比较,只要它(a)比另一个数(b)小,就说明a比已经比较过的数小。

i=2,j = 3 to 100

除开第一位置上的最小数之后,接下来争第二位,同上,遍历所有。谁与我争锋,勇者必胜(这里是谁小谁上位)

结论:这个方法一定能排出正确顺序来,但是会花很久。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值