Private Sub Form_Click()Dim a(1 To 5) As LongDim 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 iEnd Sub1、二重循環中的外層為什么要終值到初值然后要步長-1這樣做的目的?2、內層循環中為什么要初值到外層-1是什么意思。目的又是什么?
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
先弄清冒泡法求解的方式。每次循環后冒出一個最大值,假設第一次循環時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
,所以每次內循環就會少一次,冒泡法的算法思想就是每次冒一個數出來.
添加回答
舉報
0/150
提交
取消