Спасибо за совет, я так и сделал. После 6 часов разборки, понял, что проблема была в сортировке. Проверил около 10 вариантов и самый быстрый оказался , скорость выросла с 215 сек до 1 сек. Мне нужно было сортировать числа.
Работает очень быстро и хорошо сортирует по возрастанию числа (про остальное не знаю).
И еще что касается скорости: до этого (с пузырьковой сортировкой), считал для 1000 генераций 190 сек. Сейчас для 10000 генераций считает 40 сек.
| Код |
|---|
Public Sub QuickSort(vArray As Variant, inLow As Long, inHi As Long) Dim pivot As Variant Dim tmpSwap As Variant Dim tmpLow As Long Dim tmpHi As Long tmpLow = inLow tmpHi = inHi pivot = vArray((inLow + inHi) \ 2) While (tmpLow <= tmpHi) While (vArray(tmpLow) < pivot And tmpLow < inHi) tmpLow = tmpLow + 1 Wend While (pivot < vArray(tmpHi) And tmpHi > inLow) tmpHi = tmpHi - 1 Wend If (tmpLow <= tmpHi) Then tmpSwap = vArray(tmpLow) vArray(tmpLow) = vArray(tmpHi) vArray(tmpHi) = tmpSwap tmpLow = tmpLow + 1 tmpHi = tmpHi - 1 End If Wend If (inLow < tmpHi) Then QuickSort vArray, inLow, tmpHi If (tmpLow < inHi) Then QuickSort vArray, tmpLow, inHi End Sub |
И еще что касается скорости: до этого (с пузырьковой сортировкой), считал для 1000 генераций 190 сек. Сейчас для 10000 генераций считает 40 сек.
Изменено: - 28.01.2017 05:01:15