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.可以写成其它的么 展开
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.可以写成其它的么 展开
4个回答
展开全部
首先,所谓的冒泡排序,因为书本上都这样引入的,就是河里的气泡是从下向上移动的,所以为了符合这种说法,在排序过程中,也就从数组下标的大的元素开始,向数组下标小的元素方向进行。
数组排序要用双重循环:
外循环的次数,决定了需要排序多少轮次,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)
。。。。。。
其余,你自己分析吧?
数组排序要用双重循环:
外循环的次数,决定了需要排序多少轮次,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)
。。。。。。
其余,你自己分析吧?
展开全部
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
该过程是排序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
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a是数组啊,就是要排序的那些参数LBound(a) 和
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a是数组啊,就是要排序的那些参数LBound(a) 和
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
UBound(a)分别取出数组的上下标,这样可以根据上下标来确定数组中某个参数的值,就是第几个的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询