vb中冒泡排序法详解

请帮我详细解析下,我就是看不懂代码,原理我懂了,帮我解析下代码。谢谢

书上讲的是不容易理解我来给你说下比如 3,1,2,5,6,4 为例首先把数按顺序赋给数组 a(1~6) 不难吧然后给你提一点冒泡法最后一个数会确定下来第一个数,来下面:从大到小排: 1。for i = 1 to 6 2。 for j=i to 6-i 3。 if a(j)<a(j+1) then t=a(i) a(j)=a(j+1) a(j+1)=t 4。 next j 5。next i首先i=1,j=1 j=j+1 3和1比不交换 i=1 j=2 j=j+1 1和2交换 为3,2,1,5,6,4 i=1 j=3 j=j+1 1和5交换 为3,2,5,1,6,4 i=1 j=4 j=j+1 1和6交换 为3,2,5,6,1,4 i=1 j=5 j=j+1 1和4交换 为3,2,5,6,4,1 注意代码6 for j= 1 to 6-i 为什么6-i 因为最小的数 1 已经确定了,下次不需要排了。 继续反复操作 确定倒数第2个最小的,直到确定到顺数第2个,完成。 为什么是顺数第2个,因为第1个和第2个比较了,第1个就不用比了,其中一个最大一个最小。累啊```不知道表达清楚没
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-18
设要排序的数组为a(n)for j=1 to n-1'外循环for i= j+1 to n‘内循环if a(j)>a(i) then’分别比较第i和其后所有个元素,若第i个元素大于第j个元素则交换,相当于把最小的移到第一个,即冒泡到最上个 t=a(i)a(i)=a(j)a(j)=tnext inext jend ifnext n内循环一次保证最小的元素移到最前,下次排序只需要从第j+1个元素开始就行
第2个回答  推荐于2017-06-13
Dim i, j, intmin As Integer, n As Integer
Dim sngsq(), sngt As Single '输入原始数据
n = Val(InputBox("请输入排序的个数N的值"))
ReDim sngsq(n) '重新定义数组
Print "排序前"
For i = 1 To n
MsgBox "请输入第" & Str(i) & "个数:"
sngsq(i) = Val(InputBox("请输入")) '将输入的数据转换为数值型
Print sngsq(i);
Next
Print
Print "排序后"
'排序
For i = 1 To n - 1
intmin = i '对第i遍排序,初始假定第i个元素最小
For j = i + 1 To n '找出最小的元素序号
If sngsq(j) < sngsq(intmin) Then intmin = j
Next j
'将找出的最小元素与第i个元素交换
sngt = sngsq(i)
sngsq(i) = sngsq(intmin)
sngsq(intmin) = sngt
Next i
'打印输出
For i = 1 To n
Print sngsq(i); '不换行输出
Next i
第3个回答  2013-05-04
如果五个号码为数组元素(1)到(5),正确的排序过程:

对于i = 1至4

对于L = 1到5 - 如果A(L)(L +1)

N = A(L)

A(L),= A(L +1)

(L +1) =

结束如果下一页l

接下来,我

能够到第一台计算机来验证结果,然后分析程序。本回答被网友采纳
相似回答