ASP冒泡排序代码逐句解释一下?

来源:百度知道 编辑:UC知道 时间:2024/06/28 10:47:23
dim ary(5)
ary(5)=13
ary(4)=48
ary(3)=24
ary(2)=28
ary(1)=59
ck=true
do Until ck = false
ck=false
For f = 1 to 4
if clng(ary(f))>clng(ary(f+1)) then
v1=clng(ary(f))
v2=clng(ary(f+1))
ary(f)=v2
ary(f+1)=v1

ck=true
end if
next
loop
sort=ary

for f=1 to 5
response.Write ary(f)&"<br>"
next
7,8,9三行实在是无法理解啊!希望高手能指点一二!

<%
dim ary(5)
ary(5)=13
ary(4)=48
ary(3)=24
ary(2)=28
ary(1)=59 '为数组付初值
ck=true '为CK设置成TRUE,为下面DO循环做准备
do Until ck = false '做DO 循环,这里比较重要,如果下面的FOR循环返回的值是TRUE 那就证明这5个数中至少有两个挨着的数满足条件clng(ary(f))>clng(ary(f+1)),而这两个数有可能在中间。也有可能在最后,绝对不可能在前面。。(这里的前面和后面是按下标排序的,下标小叫前面,下标大叫后面)所以就必须要在做DO循环,重新从1-5个数进行比较,如果在没有任何挨着的两个数满足条件clng(ary(f))>clng(ary(f+1)),那么if语句就不会执行,ck=false,跳出DO 循环
ck=false
For f = 1 to 4
if clng(ary(f))>clng(ary(f+1)) then '挨着的两个数两两比较。然后大的放前面 小的放后面
v1=clng(ary(f))
v2=clng(ary(f+1))
ary(f)=v2 '这里存放比较后更小的一个数
ary(f+1)=v1 '这里存放比较后更大的一个数

ck=true '如果存在两个挨着的数满足条件clng(ary(f))>clng(ary(f+1))那么CK=TRUE 就会继续执行DO 循环
end if
next
loop
'sort=ary

for f=1 to 5
response.Write ary(f)&"<br>" '打印出来
next
%>
2楼的这句说的好---变量ck使用来标志排序是否已经完成的,冒泡排序是这样的,当某一趟排序没有发生元素交换,说明排序已经排好了
但是二楼的注释在ASP