一个vb程序问题搞不清楚,请行家指点.

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:45:30
这样一个程序片段:
if n(j)>n(j+1)then
t=n(j+1)
n(j+1)=n(j)
n(j)=t
end if
假如这个数组的原始输入是5 4 3 2 1 五个数.那么当j=1时,
n(j)=5,n(j+1)=4,n(j)>n(j+1)
于是就:
t=n(j+1)=4
n(j+1)=n(j)=5
n(j)=t=4
也就是说n(j)和nj+1)的位置进行了交换.
那么,数组的排列就变成了4 5 3 2 1
问题是,当j=1时,这个交换是进行这一次停止了呢?还是还要继续进行?比如说,再拿5和3比较,5和2比较……是在下一次循环中进行还是继续在这一次循环中完成?
望行家指点,并作出理由分析。

他只执行一次,得到的结果是45321,如果你想让他重复执行可以用for循环语句
例如
for j=1 to 4
if n(j)>n(j+1)then
t=n(j+1)
n(j+1)=n(j)
n(j)=t
end if
next j
结果是43215

for i=lbound(n) to ubound(n)
for j=i+1 to ubound
if n(j)>n(j+1)then
t=n(j+1)
n(j+1)=n(j)
n(j)=t
end if
next j
next i
你想实现前面元素与后面的继续比较 可以用两重循环啊 内层控制比较、交换 外层控制改变与之比较的数

你是要排序吗?
for i=1 to m 'm是数组的元素个数
for j=ito m
if n(i)>n(j) then '>从小到大排列;<就是从大到小排列
t=n(i)
n(i)=n(j)
n(j)=t
end if
next j
next i

你这个并没有循环啊,只是个if语句,如果你想把5掉到数组最后,可以在end前加上
j=j-1,改变J的变量,在用goto循环(最简单的循环)到程序的第一句(这里要设个名字),重新执行,判断下一个比较。
还要加上一个判断,防止死循环。加上一个关于j的判断,来结束循环,比如if J=0,跳出循环(那个命令忘了)你也该知道有这个的,好像是break什么的