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是什么意思。目的又是什么?
先弄清冒泡法求解的方式。
每次循环后冒出一个最大值,假设第一次循环时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、二重循环中的外层为什么要终值到初值然后要步长-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
目的是为了防止你没循环完整 或者是你循环超限 程序是死的 人是活的 像这些 都可变 只要你能做到把数据比较完整 代码怎么写只是一个方法 只所以比较一般都用这个 是因为比较经典
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息