正文

''快速排序2005-09-25 22:51:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/iamben250/5341.html

分享到:

'快速排序
Public Function QuickSortASC(vData As Variant, Low As Long, Hi As Long) As Boolean
   If Not IsArray(vData) Then Exit Function
  
   Dim lTmpLow As Long
   Dim lTmpHi As Long
   Dim lTmpMid As Long
   Dim vTempVal As Long
   Dim vTmpHold As Long
   On Error GoTo QuickSort
   QuickSortASC = False
  
   lTmpLow = Low
   lTmpHi = Hi
  
   If Hi <= Low Then Exit Function
  
   If lTmpMid = 0 Then
      lTmpMid = (Low + Hi) \ 2
   End If
  
   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
      QuickSortASC vData, Low, lTmpHi
   End If
 
   If (lTmpLow < Hi) Then
      QuickSortASC vData, lTmpLow, Hi
   End If
   QuickSortASC = True
  
   Exit Function
QuickSort:
   MsgBox "ÊäÈëÁË´íÎóµÄÊý¾Ý", vbExclamation, "´íÎó"
End Function


阅读(2597) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册