vb 冒泡排序

6个数排序。Fori=1To5Forj=6Toi+1Step-1Ifa(j-1)>a(j)Thent=a(j)a(j)=a(j-1)a(j-1)=tEndIfNextjL... 6个数排序。
For i = 1 To 5
For j = 6 To i + 1 Step -1
If a(j - 1) > a(j) Then
t = a(j)
a(j) = a(j - 1)
a(j - 1) = t
End If
Next j

Label4.Caption = Label4.Caption + Str(a(i))
Next i
能好好解释下这段代码,特别是为什么j=6 to i+1..为什么是i+1.可以写成其它的么
展开
 我来答
syx54
2013-12-05 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2743万
展开全部
首先,所谓的冒泡排序,因为书本上都这样引入的,就是河里的气泡是从下向上移动的,所以为了符合这种说法,在排序过程中,也就从数组下标的大的元素开始,向数组下标小的元素方向进行。
数组排序要用双重循环:
外循环的次数,决定了需要排序多少轮次,6个元素的数组,需要5轮,n个元素的数组,需要n-1轮次。
内循环,决定每一轮是哪些元素进行比较交换。
规律或者目的:
第一轮,要把第1小的值(或第1大的值)移动到第1个元素的位置里,
第二轮,要把第2小的值(或第2大的值)移动到第2个元素的位置里,
......
第n-1轮,要把第n-1小的值(或第n-1大的值)移动到第n-1个元素的位置里,
最后,第n个元素,不需要比较了,它一定是第n小(第n大的值),已经在第n个元素里了。
在比较的每一轮过程中,用for j = 6 to i +1 Step -1
你可以把每一轮的i,j的变化列表,就理解了:
第一轮:有6个元素参与比较,一共比较5次(i=1,j=6 to 2)
第1次 第2次 第3次 第4次 第5次
a(5)与a(6) a(4)与a(5) a(3)与a(4) a(2)与a(3) a(1)与a(2)
第二轮:有5个元素参与比较,一共比较4次(i=2,j=6 to 3)
第1次 第2次 第3次 第4次
a(5)与a(6) a(4)与a(5) a(3)与a(4) a(2)与a(3)
。。。。。。
其余,你自己分析吧?
忠成静0O
2013-12-04 · TA获得超过1049个赞
知道小有建树答主
回答量:1114
采纳率:100%
帮助的人:899万
展开全部
For j = 6 To i + 1 Step -1 你结合下面一句 If a(j - 1) > a(j) Then 就好理解了,
该过程是排序a(1)到a(6)6个数组值,j 循环时是使用递减方法,在比较时a(j - 1)中最j-1最小值只能是1所以i+1
我一般都是这么写,更容易理解一点:
for i=1 to 5
for j=i+1 to 6
if a(i)>a(j) then t=a(i):a(i)=a(j):a(j)=t
next
next
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
余让厚俏
2019-06-24 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:1163万
展开全部
a是数组啊,就是要排序的那些参数LBound(a) 和
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
系长征慕诗
2019-12-02 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.2万
采纳率:25%
帮助的人:794万
展开全部
a是数组啊,就是要排序的那些参数LBound(a) 和
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式