+ -
当前位置:首页 → 问答吧 → 求解一个数组排序

求解一个数组排序

时间:2011-09-03

来源:互联网

一个数组排序 {mp3:33,mp4:2,phone:44,mp6:3} 这个数据是已逗号分隔,然后按照冒号后面的数字排序

最终结果是{phone:44,mp3:33,mp6:3,mp4:2}
请问如何解决这个超级难题啊,asp代码 谢谢,如果解决我继续加分,这个对我很重要,是一个大小排序问题

作者: Jamie2012   发布时间: 2011-09-03

不懂ASP
不过这个需求在C#中实现起来很容易

作者: q107770540   发布时间: 2011-09-03

拆分成键和值的2个数组,对值排序
VBScript code
s="{mp3:33,mp4:2,phone:44,mp6:3}"
arr=split(replace(replace(s,"{",""),"}",""),",")
idx=ubound(arr)
dim k(),v()
redim k(idx),v(idx)
'拆封初始化键和值得数组
for i=0 to idx
 tarr=split(arr(i),":")
 k(i)=tarr(0):v(i)=cint(tarr(1))
next
'快速排序
for i=0 to idx-1
  for j=i+1 to idx
     if v(i)<v(j) then
       t=v(i):v(i)=v(j):v(j)=t'交换值
       t=k(i):k(i)=k(j):k(j)=t'同时交换键
     end if
  next
next

s=""
'重新组合成字符
for i=0 to idx
  s=s&","&k(i)&":"&v(i)
next

s="{"&right(s,len(s)-1)&"}"

response.write s

作者: showbo   发布时间: 2011-09-03

HTML code
<%
Dim x, y()
x = Split("mp3:33,mp4:2,phone:44,mp6:3", ",")
ReDim y(2, UBound(x))
For i = 0 To UBound(x)
y(0, i) = i
y(1, i) = Left(x(i), InStr(x(i), ":") - 1)
y(2, i) = Right(x(i), Len(x(i)) - InStr(x(i), ":"))
next
z=""
for i=0 to ubound(x)-1
for j=i+1 to ubound(x)
if y(2,i)<y(2,j) then
t1=y(2,i)
y(2,i)=y(2,j)
y(2,j)=t1
t1=y(1,i)
y(1,i)=y(1,j)
y(1,j)=t1
end if
next
z=z & y(1,i) & ":" & y(2,i) & ","
next
response.write left(z,len(z)-1)
%>

作者: qianjin036a   发布时间: 2011-09-03