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