Quick sort : Array Sort « Data Type « VBA / Excel / Access / Word

Home
VBA / Excel / Access / Word
1.Access
2.Application
3.Data Type
4.Data Type Functions
5.Date Functions
6.Excel
7.File Path
8.Forms
9.Language Basics
10.Math Functions
11.Outlook
12.PowerPoint
13.String Functions
14.Windows API
15.Word
16.XML
VBA / Excel / Access / Word » Data Type » Array Sort 
Quick sort
 

Private Sub QuickSort(ByRef Values As Variant, Optional ByVal Left As Long, Optional ByVal Right As Long)
  Dim As Long
  Dim As Long
  Dim As Long
  Dim Item1 As Variant
  Dim Item2 As Variant

  On Error GoTo Catch
  If IsMissing(LeftOr Left = Then Left = LBound(Values)
  If IsMissing(RightOr Right = Then Right = UBound(Values)
  I = Left
  J = Right

  Item1 = Values((Left + Right22)
  Do While I < J
    Do While Values(I, 2< Item1 And I < Right
      I = I + 1
    Loop
    Do While Values(J, 2> Item1 And J > Left
      J = J - 1
    Loop
    If I < J Then
      Call Swap(Values, I, J)
    End If
    If I <= J Then
      I = I + 1
      J = J - 1
    End If
  Loop
  If J > Left Then Call QuickSort(Values, Left, J)
  If I < Right Then Call QuickSort(Values, I, Right)
    Exit Sub
Catch:
  MsgBox Err.Description, vbCritical
  
End Sub
Private Sub Swap(ByRef Values As Variant, ByVal I As Long, ByVal J As Long)
  Dim Temp1 As Double
  Dim Temp2 As Double
  Temp1 = Values(I, 1)
  Temp2 = Values(I, 2)
  Values(I, 1= Values(J, 1)
  Values(I, 2= Values(J, 2)
  Values(J, 1= Temp1
  Values(J, 2= Temp2
End Sub

 
Related examples in the same category
1.VBA Bubble Sort
2.using dynamic arrays in bubble sort
3.Performing a Binary Search through an Array
4.Quick Sort 2
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.