我正在为VBA中的数组寻找合适的排序实现.Quicksort将是首选.或任何其他排序算法除了冒泡或合并之外的就足够了.
请注意,这是为了与MS Project 2003一起使用,因此应避免使用任何Excel本机函数和任何.net相关的函数.
我有一个182.123大小的数组,我想通过数组类的特定属性对它们进行排序.该类被称为CFlujo,我想要对它们进行排序的属性是一个名为id_flujo的字符串.到目前为止,我正在做这样的冒泡,但它只需要太长时间:
Sub sort_arreglo(arreglo As Variant)
For x = LBound(arreglo) To UBound(arreglo)
For y = x To UBound(arreglo)
Dim aux As CFlujo
aux = New CFlujo
If UCase(arreglo(y).id_flujo) < UCase(arreglo(x).id_flujo) Then
Set aux = arreglo(y)
Set arreglo(y) = arreglo(x)
Set arreglo(x) = aux
End If
Next y
Next x
End Sub
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经研究了选择排序,但我知道你不能从数组中删除项目,所以我不能制作两个列表来将值从一个排序到另一个.我可以将我的数据放入集合中,但我在数据质量方面遇到了麻烦,除非我预先分配内存(比如在数组中).