VB中的For循环的问题

在Form1中画四个文体框及一个命令按扭,在四个文本框中各输入一个整数,组成一个数组,然后单击命令按钮,编写以下程序可使数组按升序排序,并在文本框中显示出来:Option... 在Form1中画四个文体框及一个命令按扭,在四个文本框中各输入一个整数,组成一个数组,然后单击命令按钮,编写以下程序可使数组按升序排序,并在文本框中显示出来:
Option Base 1
Private Sub Sort(a() As Integer)
Dim Start As Integer, Finish As Integer
Dim i As Integer, j As Integer, t As Integer
Start = LBound(a)
Finish = UBound(a)

For i = 4 To 2 Step -1
For j = 1 To 3
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
End Sub

Private Sub Command1_Click()
Dim arr1
Dim arr2(4) As Integer
arr1 = Array(Val(Text1.Text), Val(Text2.Text), Val(Text3.Text), Val(Text4.Text))

For i = 1 To 4
arr2(i) = CInt(arr1(i))
Next i
Sort arr2()
Text1.Text = arr2(1)
Text2.Text = arr2(2)
Text3.Text = arr2(3)
Text4.Text = arr2(4)

End Sub

请问其中的For i = 4 To 2 Step -1的作用是什么,只用一层循环For i=1 to 4也可以使其按从小到大排序吧?这个双层循环怎么理解呢?
谢谢!
展开
 我来答 举报
翰林院里扫地的
2006-09-23 · TA获得超过308个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:0
展开全部
Step-1 表示每一步减1,也就是循环第一次是i=4,然后是i=3,i=2
这是称为“冒泡法”的排序方法,可以这样理解:
外循环表示需进行几轮比较,对4个元素进行比较排序,需要进行3轮比较,所以For i = 4 To 2 Step -1。
而内循环则可以这样说:
第一次是i=4,a(1)与a(2)、a(2)与a(3)、a(3)与a(4)进行比较,如果发现排列顺序不对,则交换位置,这样出了内循环之后,最大的元素会“沉”到最后一位成为新的a(4)。

而第二次则是i=3,在前三个元素中找到最大的(由于在上一个循环比较中a(4)已经是最大的了,所以就不需再拿a(4)出来比较,可将阁下的代码中内循环改为For j = 1 to i-1),把它沉到第三位成为新的a(3)。同理,第三次是在前两位进行排序。这样当循环结束后,最小的元素就如水泡往上冒一样,一步步冒到最上面来了。
楼上的yutuo5兄的内循环定义错了,应该是For j = 1 To i-1 的。
(由于本人疏忽,发表答复后进行了多次修改,深感抱歉。)
aaui
2006-09-23 · TA获得超过154个赞
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:151万
展开全部
只用一层循环不能完成排序。比如数组为:
4321
一次排序后:3214
二次后:2134
三次后:1234
2 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
yutuo5
2006-09-23 · TA获得超过363个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:610万
展开全部
首先,只用一层是不可以的,当你的数据很特殊的时候还有可能

两个循环是一种变化后的冒泡算法
改成下面代码应该更好

For i = 4 To 2 Step -1
For j = 1 To i
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
2 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
百度网友72c3f528d
2006-09-23 · 超过67用户采纳过TA的回答
知道答主
回答量:211
采纳率:100%
帮助的人:0
展开全部
For i = 4 To 2 Step -1
就是从4到2,每次循环递减1的运算
抢首赞 已赞过 已踩过<
你对这个回答的评价是?
评论 举报 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式