by 清泉
23. 六月 2009 19:27
Function QuickSort(vData, Low, Hi)
If Not IsArray(vData) Then Exit Function
Dim lTmpLow
Dim lTmpHi
Dim lTmpMid
Dim vTempVal
Dim vTmpHold
lTmpLow = Low
lTmpHi = Hi
lTmpMid = (Low + Hi) \ 2
vTempVal = vData(lTmpMid)
Do While (lTmpLow <= lTmpHi)
Do While (vData(lTmpLow) < vTempVal And lTmpLow < Hi)
lTmpLow = lTmpLow + 1
Loop
Do While (vTempVal < vData(lTmpHi) And lTmpHi > Low)
lTmpHi = lTmpHi - 1
Loop
If (lTmpLow <= lTmpHi) Then
vTmpHold = vData(lTmpLow)
vData(lTmpLow) = vData(lTmpHi)
vData(lTmpHi) = vTmpHold
lTmpLow = lTmpLow + 1
lTmpHi = lTmpHi - 1
End If
Loop
If (Low < lTmpHi) Then
QuickSort vData, Low, lTmpHi
End If
If (lTmpLow < Hi) Then
QuickSort vData,lTmpLow, Hi
End If
End Function