Статистика
Просмотры материалов : 167115Сортировка выбором |
Автор: Александр Хохлов |
06.02.2011 12:27 |
Реализация сортировки выбором. Постановка задачи.Имеется исходный диапазон - столбец A. Требуется осуществить его сортировку выбором по возрастанию и результат записать в столбец B. Действие 1. Алгоритм сортировки выбором.Public Function SortSelectionArray(A As Variant) As Variant Dim n, i, j, Min_i As Byte Dim temp As Variant n = UBound(A, 1) For i = 1 To n - 1 'предположение, что минимальным является 'первый элемент обрабатываемой последовательности Min_i = i For j = i + 1 To n 'если найден элемент меньше 'Min_i получит новое значение If A(j) < A(Min_i) Then Min_i = j Next 'перестановка только в случае, 'если элемент меньше был обнаружен If Min_i <> i Then temp = A(i) A(i) = A(Min_i) A(Min_i) = temp End If Next SortSelectionArray = A End Function Действие 2. Проверка работоспособности.Воспользуемся уже готовой функцией Случайная сортировка диапазона быстро работы с диапазонами и заполним исходный массив значениями с листа через нее. Public Function SortSelectionRange(fromRange, toRange As Range) Dim A As Variant Dim Ub As Byte Ub = fromRange.Rows.Count ReDim A(1 To Ub) As Variant For i = 1 To Ub A(i) = fromRange.Rows(i) Next i B = SortSelectionArray(A) For i = 1 To Ub toRange.Rows(i) = B(i) Next i End Function Дальше вызов с указанием исходного-конечного диапазонов. Public Sub ПроверкаРаботы() Application.ScreenUpdating = False SortSelectionRange [a1:a10], [b1:b10] End Sub |