Sub Quicksort (List() As Long, start As Integer, finish As Integer)
Dim pivot As Long
Dim hi As Integer
Dim lo As Integer
Dim i As Integer
' If the list has no more than 1 element, it's sorted.
If start >= finish Then Exit Sub
' Pick a dividing item.
i = Int((finish - start + 1) * Rnd + start)
pivot = List(i)
' Swap it to the front so we can find it easily.
List(i) = List(start)
' Move the items smaller than this into the left portion of the list.
' Move the others into the right.
lo = start
hi = finish
Do
' Look down from hi for a value < pivot.
Do While List(hi) >= pivot
hi = hi - 1
If hi <= lo Then Exit Do
Loop
If hi <= lo Then
List(lo) = pivot
Exit Do
End If
' Swap the lo and hi values.
List(lo) = List(hi)
' Look up from lo for a value >= pivot.
lo = lo + 1
Do While List(lo) < pivot
lo = lo + 1
If lo >= hi Then Exit Do
Loop
If lo >= hi Then
lo = hi
List(hi) = pivot
Exit Do
End If
' Swap the lo and hi values.
List(hi) = List(lo)
Loop
' Sort the two sublists
Quicksort List(), start, lo - 1
Quicksort List(), lo + 1, finish
End Sub
''''Listing 3. Quicksort.
'''' Link to article about sorting in V.B.
''''
Link to another article about sorting in V.B.
''''
Yet another one about sorting in V.B.
/* ========== Quicksort implementation in Python. (It creates two lists, then combines them.)
def QuickSort(myList):
if myList == []:
return [] # Empty lists are sorted by definition
pivot = myList[0]
beforePivot = [x for x in myList[1:] if x <= pivot]
afterPivot = [x for x in myList if x > pivot]
return QuickSort(beforePivot) + [pivot] + QuickSort(afterPivot)
*/