
08-10-2002, 12:59 PM
|
|
|
Challenge!
|
Here's my code for QuickSort, which sorts the array strArray in ascending order. I want to sort in descending order, can anyone plz help me with that? Although I wrote this code myself, I just cant make IT work for descending order!!
Public Sub QuickSort(lonLower, lonUpper)
Dim lonRandomPivot As Long
Dim lonTempLower As Long
Dim lonTempUpper As Long
Dim strLastItem As String
Dim strTempItem As String
Randomize Timer
If lonLower < lonUpper Then
If lonUpper - lonLower = 1 Then
If strArray(lonLower) > strArray(lonUpper) Then
strTempItem = strArray(lonUpper)
strArray(lonUpper) = strArray(lonLower)
strArray(lonLower) = strTempItem
End If
Else
lonRandomPivot = Int(Rnd * (lonUpper - lonLower + 1)) + lonLower
strTempItem = strArray(lonUpper)
strArray(lonUpper) = strArray(lonRandomPivot)
strArray(lonRandomPivot) = strTempItem
strLastItem = strArray(lonUpper)
Do
lonTempUpper = lonUpper
lonTempLower = lonLower
Do While (lonTempLower < lonTempUpper) And (strArray(lonTempLower) <= strLastItem)
lonTempLower = lonTempLower + 1
Loop
Do While (lonTempUpper > lonTempLower) And (strArray(lonTempUpper) >= strLastItem)
lonTempUpper = lonTempUpper - 1
Loop
If lonTempLower < lonTempUpper Then
strTempItem = strArray(lonTempUpper)
strArray(lonTempUpper) = strArray(lonTempLower)
strArray(lonTempLower) = strTempItem
End If
Loop While (lonTempLower < lonTempUpper)
strTempItem = strArray(lonTempLower)
strArray(lonTempLower) = strArray(lonUpper)
strArray(lonUpper) = strTempItem
If (lonTempLower - lonLower) < (lonUpper - lonTempLower) Then
QuickSort lonLower, lonTempLower - 1
QuickSort lonTempLower + 1, lonUpper
Else
QuickSort lonTempLower + 1, lonUpper
QuickSort lonLower, lonTempLower - 1
End If
End If
End If
End Sub
|
|