Программисты помогите с быстрой сортировкой. Учусь и хочу её сам написать, но застрял на рекурсии. Кратко объясню как я пишу: функция QuickSort получает в качестве параметров массив (целых чисел), нижнюю границу массива и верхнюю границу массива. Функция Decomposition вызывается из функции QuickSort и принимает 4 параметра (массив, опорный индекс, нижнюю границу, верхнюю границу. Процедура Decomposition определяет окончательную позицию опорного элемента (опорным элементом в начале служит значение с индексом 0) в отсортированном массиве и возвращает индекс этого элемента. Этот индекс разделяет массив на два подмассива (все значения, которые меньше этого опорного элемента и все значения, которые больше опорного значения). Далее вызывается рекурсивная процедура. И тут я остановился. Вот то, что я пишу в
процедуре QuickSort:
Public Function QuickSort(ByVal QArray As Integer(), ByVal InLower As Integer, ByVal InUpper As Integer) As Integer
Dim Elements As Integer
Elements = Decomposition(QArray, InLower, InLower, InUpper)
If Elements >= 2 AndAlso Elements <= QArray.GetUpperBound(0) - 2 AndAlso Not InLower = Elements Then
QuickSort(QArray, InLower, Elements-1)
QuickSort(QArray, Elements+1, InUpper)
End If
End Function
Скажите, что я делаю не так. Если можно примерчик на VB.Net или VB.6. Мне уже присылали пример полного алгоритма быстрой сортировки на C, но я посмотрел этот код как "баран на новые ворота" и мало, что понял.
Заранее благодарен за любую малейшую помощь.