Пример 3. Задан двумерный массив , где ; по правилу . Упорядочить массив по возрастанию элементов дробной части третьего столбца. Вывести на печать исходный и отсортированный массивы.
Решение.
1. Анализ задачи.
Сортировку массива проведем методом прямого обмена. В основе алгоритма лежит обмен соседних элементов массива. Каждый элемент массива, начиная с первого, сравнивается со следующим и если он больше следующего, то элементы меняются местами. Таким образом, элементы с меньшим значением продвигаются к началу массива (всплывают), а элементы с большим значением – к концу массива (тонут), поэтому этот метод иногда называют «пузырьковым». Этот процесс повторяется на единицу меньшее число раз, чем число элементов в массиве. Дробная часть числа вычисляется функцией .
2. Блок-схема:
3. Программа:
program Sortirovka;
TYPE
Matrix=array [1..6,1..4] of real;
VAR
a: Matrix;
R: Real;
k, i,j: Integer;
BEGIN
for i:=1 to 6 do
for j:=1 to 4 do
a[i,j]:= sin(2*i-j); {Вычисляем элементы массива}
{ Печатаем массив в виде таблицы }
|
|
WriteLn('Матрица A');
for i:=1 to 6 do begin
for j:=1 to 4 do write(a[i,j]:6:3,' '); { Вывод на экран массива A }
writeln; end;
writeln; {Пропуск пустой строки}
for i:=2 to 6 do for j:=6 downto i do
if Frac(a[j-1,3]) > Frac(a[j,3]) then
for k:= 1 to 4 do {Перестановка строк}
begin R:= a[j-1,k];
a[j-1,k]:= A[j,k];
a[j,k]:= R;
end;
WriteLn('отсортированная матрица A имеет вид ');
for i:=1 to 6 do begin for j:=1 to 4 do
write(a[i,j]:6:3,' '); { Вывод на экран отсортированного массива A }
writeln;
end;
End.
4. Вид печати: