Home  Fees/Services  Microsoft Access Templates  Tutorials  Tutorial Download  Articles  Search  Contact  Privacy  Links
Quick Sort Access
Sort Recordset Quickly
Sort Recordset Quickly  
 




Quick Sort VBA

Access VBA Recursive Quick Sort Program:  At times you may need to sort a list of values programmatically. One of the most efficient and easiest sorts is the recursive quick sort. Recursive means that the routine calls itself.
The concept used in the quick sort is as follows:

  1. Choose the middle value of the list.

  2. Starting at the bottom of the list move up the list, toward the middle, until you find the first value that is not in sort order in relation to the middle value.

  3. Starting at the top of the list move down the list, toward the middle, until you find the first value that is not in sort order in relation to the middle value.

  4. Now switch the two values that were found out of sort order.

  5. Repeat steps 2 through five until you get to the middle of the list.

  6. Call the sort routine on the top half of the list.

  7. Call the sort routine on the bottom half of the list.


What happens is that each pass through the routine does a small amount of sorting then cuts the size of the list in half and sends the 2 new halves to be sorted. This continues until each part of the list is perfectly sorted. The result is that the overall whole is sorted.

Private Sub QuickSort(strArray() As String, intBottom As Integer, intTop As Integer)
Dim strPivot As String, strTemp As String
Dim intBottomTemp As Integer, intTopTemp As Integer

intBottomTemp = intBottom
intTopTemp = intTop

strPivot = strArray((intBottom + intTop) \ 2)

While (intBottomTemp <= intTopTemp)

� < comparison of the values is a descending sort
While (strArray(intBottomTemp) < strPivot And intBottomTemp < intTop)
    intBottomTemp = intBottomTemp + 1
Wend

While (strPivot < strArray(intTopTemp) And intTopTemp > intBottom)
    intTopTemp = intTopTemp - 1
Wend
If intBottomTemp < intTopTemp Then
    strTemp = strArray(intBottomTemp)
    strArray(intBottomTemp) = strArray(intTopTemp)
    strArray(intTopTemp) = strTemp
End If

If intBottomTemp <= intTopTemp Then
    intBottomTemp = intBottomTemp + 1
    intTopTemp = intTopTemp - 1
End If

Wend

'the function calls itself until everything is in good order
If (intBottom < intTopTemp) Then QuickSort strArray, intBottom, intTopTemp
If (intBottomTemp < intTop) Then QuickSort strArray, intBottomTemp, intTop

End Sub

Quick Sort contributed by Janet Loch









A Blue Claw Database Design Article:

Repair Corrupted Access Table
 





Blue Claw Database Design Downloadable Tutorial:
Access Conditional Format  





A Blue Claw Database Design Template:

Document Revision Control Application
 





Contact Information

Copyright 2000-2012 Blue Claw Database Design, LLC

VBA Tutorials:
VBA Access-Google Earth
VBA Age Calculation
VBA Change Case
VBA Email via Gmail
VBA Outlook Email
VBA Read Email Access
VBA Email Attachment
VBA Send Outlook Email
VBA Running Sum
VBA Concatenate Records
VBA Stock Quotes
VBA CreateQueryDef
VBA Find Database Path
VBA Detail-Master Update
VBA Data Validation
VBA Field Value New-Old
VBA FindFirst
VBA Access Version
VBA Global Variable Parameter
VBA Global Variables
VBA Active Labels
VBA Files List Box
VBA Mail Merge
VBA Quick Sort
VBA Recordset Filters
VBA Reference Form Field
VBA Select Case
VBA Access Transactions


Visual Basic Function Examples