Результат выполнения программы:
Пример 12. Дана матрица А(n, m). Отсортировать каждую строку в порядке возрастания.
Для решения задачи:
1) вводим размеры массива А(n, m) и значения его элементов;
2) просматриваем строки массива и упорядочиваем их;
3) выводим матрицу.
Для решения этой задачи воспользуемся алгоритмом упорядочивания одномерного массива. Сравниваем между собой первый и второй элементы строки массива и переставляем их, если это необходимо в порядке возрастания. Затем то же самое проделываем со вторым и третьим элементами и т.д. до конца строки массива. В результате этих сравнений и перестановок наибольшее число строки окажется последним.
Второй этап сравнений и перестановок будем производить для (n – 1) элементов строки, начиная с первого. В этом случае предпоследним окажется наибольший из (n – 1) членов строки массива. Уменьшая каждый раз количество рассматриваемых элементов на единицу, операции сравнения и перестановок закончим тогда, когда останется всего один элемент строки массива.
Подобные операции выполняем для каждой строки по отдельности.
Перестановку элементов будем осуществлять с помощью промежу-точной переменной prom.
Sub primer_12()
Dim a() As Integer
Dim n As Integer, m As Integer, i As Integer
Dim j As Integer, prom As Integer, k As Integer
n = Cells (1, 4)
m = Cells (2, 4)
ReDim a(n, m)
'очистка рабочего листа от посторонних надписей
For i = 1 To 10 * n
For j = 1 To 10 * n
Cells (i + 2, j) = ""
Next j
Next i
'заполнение массива случайными целыми числами
'вывод массива в рабочий лист Excel
Cells (4, 1) = "Исходный массив:"
For i = 1 To n
For j = 1 To m
a(i, j) = 50 - Int (Rnd () * 100)
Cells (i + 4, j) = a(i, j)
Next j
Next i
'сортировка двумерного массива по строкам
For i = 1 To n
'сортировка строки массива
For k = m - 1 To 1 Step -1
For j = 1 To k
If a(i, j) > a(i, j + 1) Then
'перестановка соседних элементов массива
prom = a(i, j)
a(i, j) = a(i, j + 1)
a(i, j + 1) = prom
End If
Next j
Next k
Next i
'вывод на печать массива с отсортированными строками
Cells (n + 6, 1) = "Преобразованный массив:"
For i = 1 To n
For j = 1 To m
Cells (i + n + 6, j) = a(i, j)
Next j
Next i