回 帖 发 新 帖 刷新版面

主题:排序问题????


这是高手写的段代码,我把str再为1,66,3,55 这样程序就无法进行排序只要有个2个数就不能正常排序了
<%
str="1,6,3,4"'Request("InputName")'如STR="1,6,3,4"
dim Arrstr
Arrstr=split(Str,",")
for i=0 to ubound(Arrstr)-1
  if Arrstr(i+1)>Arrstr(i) Then
   temp=Arrstr(i+1)
   Arrstr(i+1)=Arrstr(i)
   Arrstr(i)=temp
  End If
Next
for i=0 to ubound(Arrstr)

  if a="" Then
   a=Arrstr(i)
  else
   a=a&","&Arrstr(i)
  end if
next
response.write(a)
%>

回复列表 (共5个回复)

沙发

str="1,6,34,4"
arr=split(Str,",")
Dim t
For i=0 To UBound(arr)-1
 For j=i+1 To UBound(arr)
 If(CInt(arr(i))<CInt(arr(j))) Then
 t=arr(i)
 arr(i)=arr(j)
 arr(j)=t
 End If
 next
Next

For i=0 To UBound(arr)
 s=s&arr(i)&","
Next
 response.write Left(s,Len(s)-1)

板凳

程序执行的时候没问题。。但会显示
Microsoft VBScript 运行时错误 '800a0005' 

无效的过程调用或参数: 'Left' 

\wwwroot\123.asp, line 28

3 楼

就直接
response.write s

4 楼

可这样会把后面的,号也输出

5 楼

<%
str="1,6,34,4,55,33,22,11,77,10"
dim Arrstr
Arrstr=split(Str,",")
for j=0 to ubound(Arrstr)
    for i=0 to ubound(Arrstr)-1
      if Cint(Arrstr(i+1))>Cint(Arrstr(i)) Then
       temp=Arrstr(i)
       Arrstr(i)=Arrstr(i+1)
       Arrstr(i+1)=temp
      End If
    Next
Next
for i=0 to ubound(Arrstr)
  if a="" Then
   a=Arrstr(i)
  else
   a=a&","&Arrstr(i)
  end if

next
response.write(a)
%>
第一次回你的贴子时一时粗心搞错了,现在补充完整。wangsdong朋友的算法也是对的,他的算法应该比我现在的算法执行步骤少。不过我感觉以自己理解的方式写东西比较好,不然搞上半天也搞不明白,就不太好了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册