◆数组排序问题

cwmchp 2006-01-20 10:03:27
假如现有数组按“/”分:
002;bb;/001;aa;/003;cc;/001;bb;/

现在需要把它变成按原先数组第一个字母进行重新排序,
并且去掉第一个分号前重复的数组生成如下:
001;aa;/002;bb;/003;cc;/
其中:第四个001;bb;因为第一个分号与001相等同,所以去掉。

以下是一位师兄写的代码,但目前只能实现排序,即变为这样:
001;aa;/001;bb/002;bb;/003;cc;/

那位高手再帮忙修改下,不然过年我真的回不去了。。55
谢谢。。

<%
str="002;bb;/001;aa;/003;cc;/"
tmp=""
tmp1=split(str,"/")
for k=0 to ubound(tmp1)
for i=0 to ubound(tmp1)-1
if (tmp1(i))>= (tmp1(i+1)) then
'如果这里为>则是从小到排,如果是<则是从大到小排
tmp=tmp1(i+1)
tmp1(i+1)=tmp1(i)
tmp1(i)=tmp
end if
next
next
str1=""
for j=0 to ubound(tmp1)
str1=str1&tmp1(j)&"/"
next
str1=right(str1,len(str1)-1)
response.write ("原字串为:" & str & "<br>从小到大:" & str1)
%>
...全文
119 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hellohuan 2006-03-13
  • 打赏
  • 举报
回复
冒泡排序
yutian130 2006-03-13
  • 打赏
  • 举报
回复
mark下次再试
尚和空四 2006-03-13
  • 打赏
  • 举报
回复
'把文件名和时间按照顺序加入二维数组
dim filename_arr()
redim filename_arr(ubound(filename_arr0),2) '重新定义
for i = 0 to ubound(filename_arr0) - 1
filename_arr(i,0) = filename_arr0(i)
filename_arr(i,1) = filename_arr1(i)
next
erase filename_arr0 '删除数组
erase filename_arr1
尚和空四 2006-03-13
  • 打赏
  • 举报
回复
Dim result() As Long
Public Sub do_(a() As Long)
Debug.Print a(1, 1), a(200, 200)
End Sub

Private Sub Command1_Click()
Call do_(result)
End Sub

Private Sub Form_Load()
ReDim result(200, 200)
result(1, 1) = 1
result(200, 200) = 200
End Sub
KimSoft 2006-01-20
  • 打赏
  • 举报
回复
是啊,VBS里数组没有排序的方法。
cwmchp 2006-01-20
  • 打赏
  • 举报
回复
好强啊。也可以了。
如果能有更简洁的,那更经典了。。
KimSoft 2006-01-20
  • 打赏
  • 举报
回复
str="002;bb;/001;aa;/003;cc;/001;bb;/"

ary = Split(str, "/")
Set dic = Server.CreateObject("Scripting.Dictionary")
For I = 0 To UBound(ary) - 1
ary_sub = Split(ary(I), ";")
If Not dic.Exists(ary_sub(0)) Then
dic.Add ary_sub(0), ary_sub(1)
End If
Next

str = ""

keys = dic.Keys
items = dic.items
For I = 0 To dic.Count - 1
str = str & keys(I) & ";" & items(I) & ";/"
Next

tmp = ""
ary = split(str, "/")
for k = 0 to ubound(ary)
for i = 0 to ubound(ary) - 1
if (ary(i)) >= (ary(i + 1)) then
'如果这里为>则是从小到排,如果是<则是从大到小排
tmp = ary(i + 1)
ary(i + 1) = ary(i)
ary(i) = tmp
end if
next
next
str1=""

for j=0 to ubound(ary)
str1=str1&ary(j)&"/"
next
str1=right(str1,len(str1)-1)
response.write("原字串为:" & str & "<br>从小到大:" & str1)

可以实现了,写得不是很好。自己感觉者不行,楼主先用着,我再看看有没有简洁的办法。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧