修改正确的asp冒泡排序

软件设计 2017-05-27

网上搜到的代码,千篇一律是这个

Function Sort(ary)

Dim KeepChecking,I,FirstValue,SecondValue

 KeepChecking = TRUE 

Do Until KeepChecking = FALSE 

 KeepChecking = FALSE 

 For I = 0 to UBound(ary) 

  If I = UBound(ary) Then Exit For 

   If ary(I) > ary(I+1) Then 

    FirstValue = ary(I) 

    SecondValue = ary(I+1) 

    ary(I) = SecondValue 

    ary(I+1) = FirstValue 

    KeepChecking = TRUE 

   End If 

 Next 

Loop 

 Sort = ary 

End Function 

存在错误。。。。。。

测试一下就知道

s="11,3,1"

s=sort(split(s,","))

for i=0 to ubound(s)

response.write s(i) & "<br>"

next

打印结果是

11

 3

正确的function是:

function sort(ary)

ck=true

do Until ck = false 

 ck=false

 For f = 0 to UBound(ary) -1

  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

end function

就差在一个clng()

但好笑的是,有些数组,用那个错误的sort函数是可以排正确的。

相关推荐