VB冒泡排序法详细教学

冒泡排序法作为二级考试中比较常见的题目,难点有3个


数组定义

变量值交换

排序算法的实现


前两个比较简单,后面的我来分析一下,首先以升序(从小到大)为例

第1步   第一个数与第二个数比较,如果第一个数大于第二个,则交换变量,直到倒数第二个数(i-1),将最大的排在最后面

第2步   最大的数被推倒最后,故不用管它,继续执行第一步,但执行到上一步倒数第二个数之前一个数(j-i)


分析步骤可以看出,这个过程需要两个循环进行嵌套,现在以数组上标为 变量 i  为例,代码如下

'该代码测试时点击窗体执行,复制代码请单击两张纸图标,查看代码请单击两张纸图标左边的图标↑↑

Private Sub Form_click()
Dim a(1 To 5) As Integer
a(1) = 37
a(2) = 21
a(3) = 56
a(4) = 23
a(5) = 20


n = UBound(a)   '取得数组上界


'可替换代码开始
For j = n - 1 To 1 Step -1 '范围逐渐缩小
 For i = 1 To j Step 1  '两两交换
   If a(i) > a(i + 1) Then   '第18行
     ls = a(i)
     a(i) = a(i + 1)
     a(i + 1) = ls
     
   End If
 Next i
Next j
'可替换代码结束

For i = 1 To n Step 1
 num = num & a(i) & " "   '将排序好的数组保存到变量
Next i

Print num   '打印数组


End Sub



当然嵌套循环那部分也可以写成这样,这也是网上的一般写法


For j = 1 To n - 1 Step 1 '范围逐渐缩小
 For i = 1 To n - j Step 1 '两两交换
   If a(i) > a(i + 1) Then
     ls = a(i)
     a(i) = a(i + 1)
     a(i + 1) = ls
     
   End If
 Next i
Next j

step 1此时可以省略


当然,步骤也可以这样,把最小的排在最前面

第1步   倒数第一个数与倒数第二个数比较,如果倒数第一个数小于倒数第二个,则交换变量,直到第二个数 2

第2步   最小的数被推倒最前,故不用管它,继续执行第一步,但执行到上一步第二个数之后一个数 3


替换代码那段换成这样

For j = 2 To n Step 1 '范围逐渐缩小
 For i = n To j Step -1 '两两交换
   If a(i) < a(i - 1) Then
     ls = a(i)
     a(i) = a(i - 1)
     a(i - 1) = ls
     
   End If
 Next i
Next j

至于降序排列,之前代码里面的判断语句将  ">" 改为 "<"  或者 "<" 改为 ">"  即可,就是这样>< >< >< >< > <   ><    > <   ><   ><

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值