- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
回復 10# dou10801
Sub SortArray()
arr = Array("a", "b", "c", "d", "e", "C", "b")
'arr = Y.keys()
QuickSort arr, LBound(arr), UBound(arr)
Debug.Print Join(arr, ",")
End Sub
Function QuickSort(ByRef ar, ByVal iLo As Long, ByVal iHi As Long)
Dim pivot As Variant, lo, hi As Long
lo = iLo: hi = iHi
pivot = UCase(ar((lo + hi) \ 2))
While lo <= hi
While (UCase(ar(lo)) < pivot And UCase(lo) < UCase(iHi)): lo = lo + 1: Wend
While (UCase(ar(hi)) > pivot And UCase(hi) > UCase(iLo)): hi = hi - 1: Wend
If (lo <= hi) Then
tmp = ar(lo): ar(lo) = ar(hi): ar(hi) = tmp
lo = lo + 1: hi = hi - 1: tmp = ""
End If
Wend
If hi > iLo Then QuickSort ar, iLo, hi
If lo < iHi Then QuickSort ar, lo, iHi
End Function |
|