修改正确的asp冒泡排序

时间:2021-12-09 23:59:37

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

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 

打印结果是 

1  

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函数是可以排正确的。