Attribute VB_Name = "Module4"
'快速排序法
Private Function QuickSort(ArrayToSort() As String) As Boolean
IterateSort ArrayToSort, LBound(ArrayToSort()), UBound(ArrayToSort())
End Function
'快速排序法
Sub IterateSort(ArrayToSort() As String, ByVal StartElement As Long, ByVal EndElement As Long)
Dim HoldValue As String
Dim WorkEnd As Long, WorkStart As Long, RandomPoint As Long
Dim SortOK As Boolean
If EndElement <= StartElement Then '溢出
Exit Sub
End If
WorkStart = StartElement
WorkEnd = EndElement
RandomPoint = Int((WorkEnd - WorkStart + 1) * Rnd + WorkStart)
HoldValue = ArrayToSort(RandomPoint)
ArrayToSort(RandomPoint) = ArrayToSort(WorkStart)
SortOK = True
Do While SortOK
Do While ArrayToSort(WorkEnd) >= HoldValue
WorkEnd = WorkEnd - 1
If WorkEnd <= WorkStart Then
Exit Do
End If
Loop
If WorkEnd <= WorkStart Then
ArrayToSort(WorkStart) = HoldValue
Exit Do
End If
' 交换
ArrayToSort(WorkStart) = ArrayToSort(WorkEnd)
WorkStart = WorkStart + 1
Do While ArrayToSort(WorkStart) < HoldValue
WorkStart = WorkStart + 1
If WorkStart >= WorkEnd Then
Exit Do
End If
Loop
If WorkStart >= WorkEnd Then
WorkStart = WorkEnd
ArrayToSort(WorkEnd) = HoldValue
Exit Do
End If
ArrayToSort(WorkEnd) = ArrayToSort(WorkStart)
Loop
IterateSort ArrayToSort(), StartElement, (WorkStart - 1)
IterateSort ArrayToSort(), (WorkStart + 1), EndElement
End Sub
本文深入解析了快速排序算法的工作原理,包括快速排序的基本思想、关键步骤以及如何在数组中实现快速排序。通过实例演示,帮助读者理解算法的执行流程和性能特点。

1621

被折叠的 条评论
为什么被折叠?



