Asp classic 按日期排序二维数组
我有一个二维数组。一个维度是日期,另一个维度是名称 我试图按最新日期对这些数组值进行排序 我看了几个例子,得出了这个结论 但日期排序不正确Asp classic 按日期排序二维数组,asp-classic,Asp Classic,我有一个二维数组。一个维度是日期,另一个维度是名称 我试图按最新日期对这些数组值进行排序 我看了几个例子,得出了这个结论 但日期排序不正确 DataMax = uBound(sDateArray)-1 For i = 0 to DataMax For j = i + 1 to DataMax If DateDiff("s", DataArray(j, 0), DataArray(i, 0)) > 0 Then TemporalVa
DataMax = uBound(sDateArray)-1
For i = 0 to DataMax
For j = i + 1 to DataMax
If DateDiff("s", DataArray(j, 0), DataArray(i, 0)) > 0 Then
TemporalVariable = sDateArray(i, 0)
sDateArray(i, 0) = sDateArray(j, 0)
sDateArray(j, 0) = TemporalVariable
End If
Next
Next
For i=0 to DataMax
Response.write (sDateArray(i) & "<BR>")
next
DataMax=uBound(sDateArray)-1
对于i=0到DataMax
对于j=i+1至数据最大值
如果DateDiff(“s”,DataArray(j,0),DataArray(i,0))>0,那么
时间变量=sDateArray(i,0)
sdatarray(i,0)=sdatarray(j,0)
sDateArray(j,0)=时变
如果结束
下一个
下一个
对于i=0到DataMax
Response.write(sDateArray(i)和“
”)
下一个
该循环不是正确的排序算法
本文展示了经典ASP中的排序: 总之,这是排序部分(只需将字符串比较替换为日期比较):
我在网上找到了一个例子。 它不是一个函数,它是一个子函数,但它工作得很好。 其他建议总是受欢迎的
Sub DataSorter(arrArray)
Dim row, j, StartingKeyValue, StartingOtherValue, _
NewStartingKey, NewStartingOther, _
swap_pos
For row = 0 To UBound(arrArray)-1
StartingKeyValue = arrArray(row, 0)
StartingOtherValue = arrArray(row, 0)
NewStartingKey = arrArray(row, 0)
NewStartingOther = arrArray(row, 0)
swap_pos = row
For j = row + 1 to UBound(arrArray)
If arrArray(j, 0) > NewStartingKey Then
swap_pos = j
NewStartingKey = arrArray(j, 0)
NewStartingOther = arrArray(j, 0)
End If
Next
If swap_pos <> row Then
arrArray (swap_pos, 0) = StartingKeyValue
arrArray (swap_pos, 0) = StartingOtherValue
arrArray (row, 0) = NewStartingKey
arrArray (row, 0) = NewStartingOther
End If
Next
End Sub
子数据排序器(阵列)
尺寸行,j,开始键值,开始其他值_
NewStartingKey,NewStartingOther_
交换位置
对于行=0到UBound(阵列)-1
StartingKeyValue=Arraray(行,0)
StartingOtherValue=Arraray(第0行)
NewStartingKey=arrary(第0行)
NewStartingOther=arrary(第0行)
交换位置=行
对于j=行+1到UBound(阵列)
如果arraray(j,0)>NewStartingKey,那么
交换位置=j
NewStartingKey=arraray(j,0)
NewStartingOther=arrary(j,0)
如果结束
下一个
如果是交换位置行,则
阵列(交换位置,0)=起始键值
阵列(交换位置,0)=开始其他值
数组(行,0)=NewStartingKey
阵列(行,0)=新开始其他
如果结束
下一个
端接头
这与我这里的内容非常相似。是的,但是如果您注意到,循环以不同的索引开始和结束。尝试这些更改,看看排序现在是否有效
Sub DataSorter(arrArray)
Dim row, j, StartingKeyValue, StartingOtherValue, _
NewStartingKey, NewStartingOther, _
swap_pos
For row = 0 To UBound(arrArray)-1
StartingKeyValue = arrArray(row, 0)
StartingOtherValue = arrArray(row, 0)
NewStartingKey = arrArray(row, 0)
NewStartingOther = arrArray(row, 0)
swap_pos = row
For j = row + 1 to UBound(arrArray)
If arrArray(j, 0) > NewStartingKey Then
swap_pos = j
NewStartingKey = arrArray(j, 0)
NewStartingOther = arrArray(j, 0)
End If
Next
If swap_pos <> row Then
arrArray (swap_pos, 0) = StartingKeyValue
arrArray (swap_pos, 0) = StartingOtherValue
arrArray (row, 0) = NewStartingKey
arrArray (row, 0) = NewStartingOther
End If
Next
End Sub