Function ArrSort(arr)
'对排序 过程封转 返回排序后数组
Dim brr
brr = arr
QuickSort brr, LBound(brr), UBound(brr)
ArrSort = brr
End Function
Sub QuickSort(tr, l&, U&)
'tr为原始一维数组 L为排序起始下标 U为上标
'EH论坛香川群子改进快速排序算法
Dim i&, j&, x, t
x = tr(l): i = l + 1: j = U
Do
Do While i < U
If tr(i) > x Then Exit Do Else i = i + 1
Loop
Do While j > l
If tr(j) < x Then Exit Do Else j = j - 1
Loop
If i < j Then t = tr(i): tr(i) = tr(j): tr(j) = t Else Exit Do
Loop
If j > l Then t = tr(l): tr(l) = tr(j): tr(j) = t: Call QuickSort(tr, l, j)
If j + 1 < U Then Call QuickSort(tr, j + 1, U)
End Sub