Quick Sort
Option Explicit
Sub Main()
Dim someArr, x, ArrStr
someArr = Array(31, 25, 12, 22, 11, 85, 68, 574, 25, 36, 287, 36, 16)
Call quickSort(someArr)
For Each x In someArr
ArrStr = ArrStr & x & ", "
Next
ArrStr = left(ArrStr, Len(ArrStr) - 2)
MsgBox "The Array after Quick Sort is : " & vbCrLf & ArrStr
End Sub
Sub quickSort(targetArray)
Call q_sort(targetArray, 0, UBound(targetArray))
End Sub
Sub q_sort(targetArray, left, right)
Dim pivot, l_hold, r_hold
l_hold = left
r_hold = right
pivot = targetArray(left)
While left < right
While targetArray(right) >= pivot And left < right
right = right - 1
Wend
If left <> right Then
targetArray(left) = targetArray(right)
left = left + 1
End If
While targetArray(left) <= pivot And left < right
left = left + 1
Wend
If left <> right Then
targetArray(right) = targetArray(left)
right = right - 1
End If
Wend
targetArray(left) = pivot
pivot = left
left = l_hold
right = r_hold
If left < pivot Then
Call q_sort(targetArray, left, pivot - 1)
End If
If right > pivot Then
Call q_sort(targetArray, pivot + 1, right)
End If
End Sub