【发布时间】:2018-01-31 02:57:30
【问题描述】:
我有一个 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
到目前为止,我已经研究了Selection Sort,但我知道你不能从数组中删除项目,所以我不能创建两个列表来将值从一个到另一个排序。我可以将我的数据收集起来,但我在数据质量方面遇到了麻烦,除非我事先分配内存(比如在数组中)。
【问题讨论】:
-
stackoverflow.com/a/5104206/6646710 这个快速排序过去对我来说效果很好