Excel 使用多个排序键对类集合进行快速排序,这可能吗?
我修改了我在网上找到的一个快速排序算法,它可以对集合进行排序。它就在这里,我感谢它的作者 我的版本是这样的,它可以通过类中包含的排序键对类集合进行排序。我想做的是扩展这个算法,通过第二个键对集合进行排序,第二个键也包含在类中。我该怎么办?我已经硬编码了排序键,它可能需要参数化。这是我的密码:Excel 使用多个排序键对类集合进行快速排序,这可能吗?,excel,vba,Excel,Vba,我修改了我在网上找到的一个快速排序算法,它可以对集合进行排序。它就在这里,我感谢它的作者 我的版本是这样的,它可以通过类中包含的排序键对类集合进行排序。我想做的是扩展这个算法,通过第二个键对集合进行排序,第二个键也包含在类中。我该怎么办?我已经硬编码了排序键,它可能需要参数化。这是我的密码: Sub ClassQuickSort(coll As Collection, first As Long, last As Long) Dim vCentreVal As Variant
Sub ClassQuickSort(coll As Collection, first As Long, last As Long)
Dim vCentreVal As Variant
Dim lTempLow As Long
Dim lTempHi As Long
lTempLow = first
lTempHi = last
Dim clsTemporaryError As clsError, clsLowError As clsError, clsHiError As clsError
Dim clsSingleError As clsError
Set clsSingleError = coll.Item((first + last) \ 2)
vCentreVal = clsSingleError.variable_name
Do While lTempLow <= lTempHi
Do While coll.Item(lTempLow).variable_name < vCentreVal And lTempLow < last
lTempLow = lTempLow + 1
Loop
Do While vCentreVal < coll.Item(lTempHi).variable_name And lTempHi > first
lTempHi = lTempHi - 1
Loop
If lTempLow <= lTempHi Then
' Swap values
Set clsTemporaryError = coll.Item(lTempLow)
coll.Add coll.Item(lTempHi), After:=lTempLow
coll.Remove lTempLow
coll.Add clsTemporaryError, Before:=lTempHi
coll.Remove lTempHi + 1
' Move to next positions
lTempLow = lTempLow + 1
lTempHi = lTempHi - 1
End If
Loop
If first < lTempHi Then ClassQuickSort coll, first, lTempHi
If lTempLow < last Then ClassQuickSort coll, lTempLow, last
End Sub
Public filename As String
Public SysID_Data As Integer
Public PlanReference_Data As String
Public MemberReference_Data As String
Public variable_name As String
Public errortype As String