永发信息网

VB冒泡法之for循环原理

答案:3  悬赏:0  手机版
解决时间 2021-05-03 03:57
  • 提问者网友:兔牙战士
  • 2021-05-02 04:47

Private Sub Form_Click()
Dim a(1 To 5) As Long
Dim i, j, z As Long
  For i = 1 To 5
  a(i) = InputBox("请输入")
  Next i
  For i = 5 To 1 Step -1   '解释这个二重循环?
    For j = 1 To i - 1
    If a(j) > a(j + 1) Then
     t = a(j + 1)
     a(j + 1) = a(j)
     a(j) = t
     End If
     Next j
     Next i
   For i = 1 To 5
       Print a(i); " ";
       Next i
End Sub
1、二重循环中的外层为什么要终值到初值然后要步长-1这样做的目的?

2、内层循环中为什么要初值到外层-1是什么意思。目的又是什么?

最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-05-02 05:29

先弄清冒泡法求解的方式。


每次循环后冒出一个最大值,假设第一次循环时i = 5,程序循环比较5次,找出最大值,第一次循环后这个最大值存入a(5),此时i = 5 - 1,而内层循环中 j 表示的是数组 a(j)的存储地址,每次循环比较的是a(j)和a(j+1)里面的值,每比较一次 j 指向的地址就+1。


a()数组一共只能存储5个数据,所以 1<= j <= 5;


另外再补充一下, for j = 1 to i - 1 ;没什么 -1 这个意思,也许这个才是问题的根本,这句的意思是 这个 for 语句里面的程序循环执行 i - 1 次,这个是内部循环,每完成一次内部循环 i 的值比上次少 1 ,所以每次内循环就会少一次,冒泡法的算法思想就是每次冒一个数出来.

全部回答
  • 1楼网友:笑迎怀羞
  • 2021-05-02 06:03


1、二重循环中的外层为什么要终值到初值然后要步长-1这样做的目的?

答  因为你一共5个数  所以他是5 to 1  step -1是因为他把大数放在前面了 你也可以写成

for i=1 to 5 step 1    step 1可省略   这只是为了让它循环完整的一个初值  没啥特别意义 根据你数据的多少来决定的

2、内层循环中为什么要初值到外层-1是什么意思。目的又是什么?

内层下方比较 a(j)  a(j+1)   因为有j+1在这里放着 所以他的值最大只能取外层最大-1 

目的是为了防止你没循环完整 或者是你循环超限    程序是死的  人是活的 像这些  都可变 只要你能做到把数据比较完整  代码怎么写只是一个方法  只所以比较一般都用这个 是因为比较经典 

  • 2楼网友:神鬼未生
  • 2021-05-02 05:54
楼主一看门还没入。。。。。For i = 1 To 5 - 1和For i = 1 To 5 step - 1的区别还没弄明白。。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯