Один из наиболее распространенных процессов обработки данных —сортировка массива.
Сортировка — это размещение объектов в определенномпорядке. Числа могут размещаться по убыванию или по возрастанию.Известно несколько алгоритмов сортировки.Рассмотрим только
один из них— метод сортировки обменом.Итак, рассмотрим задачу о размещении чисел из таблицы:50 | 40 | 10 | 20 |…| 30 | 7 |в порядке неубывания.Сортировку обменом называют еще методом пузырька. Суть метода состоит в том, что последовательно сравниваются пары соседних элементов массива. Если первый элемент пары оказался больше второго, то они меняются местами и на второе место (как пузырек) «всплывает» больший из двух элементов:
40 | 50 | 10 | 20 |…| 30 | 7 |
Затем выбирается пара, состоящая из 2-го и 3-его элементов массива,сравнение и перестановка повторяются, и на 3-е место всплывает больший элемент из трех. Сравнение с перестановкой повторяются, пока не будет достигнут конец массива, в результате чего caмый большой элемент массива «всплывает» и занимает крайнее правое место:
40 | 10 | 20 | 30 |…| 7 | 50 |19
Такой проход от начала кконцу массива составляет один шагпроцесса сортировки. В результате
вьполнения прохода самый большой элемент оказался самым правым элементом массива.
Следующим шагом алгоритмаявляется проход от первого до (n-1)-го элемента. Его результатом
будет размещение наибольшего изоставшихся элементов на предпо-следнем месте и т. д.До сих пор речь шла о расположении чисел в порядке их неубывания. А как сделать, чтобы сортировка обеспечивала убываниеили не возрастание? Нужно вместо условия А [ j ] > A [j+1] записать
прямо противоположное ему условие A[j] < A[j+1].Заметим, что возможность появления двух одинаковых чисел не создает каких-либо проблем. В момент сравнения двух одинаковых элементов оба остаются на прежних местах, но затем, постепенно перемещаясь по ряду, они
займут свои окончательные положения, оставаясь в соседних позицияхю.
program sort;
const n=7;
a:array[1..n] of real=(50,40,10,20,30,5,7);
var i,j,k:integer; r:real;
begin
for i:=1 to n-1 do {на каждом шаге пузырек "плывет" от
1-ой позиции в (n-i+1)-ю позицию}
for j:=1 to n-i do
if a[j]>a[j+l] then {Сравниваются пары элементов}
begin
r:=a[j+1]; {обмен}
a[j+1]:=a[j];
a[j]:=r;
end;
{Вывод результата сортировки}
for k:=1 to n do Write(a[k]:9:4,'|'); end.
Алгоритм ввода и вывода элементов двумерного массива(пример)
Ввод двумерного массива
Program mas2;
var В: array [1.. 3, 1..5] of Integer;
i, j: integer;
begin
for i:= 1 to 3 do
for j:= 1 to 5 do
begin
writeln(‘введите элемент B[’, i, ‘,’, j, ‘]’);
readln (B[i, j ]);
end;
……
End.
Вывод двумерного массива
Program mas2;
var В: array [1.. 3, 1..5] of Integer;
i, j: integer;
begin
for i:= 1 to 3 do
for j:= 1 to 5 do
begin
writeln(‘Элемент B[’, i, ‘,’, j, ‘]=’);
read (B[i, j ]);
end;
……
End.
Алгоритм нахождения сумм значений матриц по строкам и столбцам(пример)
Алгоритм нахождения max значения в двумерном массиве(пример)
Массив – это упорядоченный набор переменных, которым присвоено одно имя. К необходимости
применения массивов мы приходим каждый раз, когда требуется связать и использовать целый ряд родственных величин. Доступ к элементам двухмерного массива осуществляется посредст-
вом двух индексов, что позволяет представить двухмерный массив в виде таблицы, в которой первый индекс определяет номер строки, а второй – номер столбца. На пересечении столбца и строки находится определенный элемент.
Данный двухмерный массив в программе описывается следующим образом
VAR A: ARRAY [1..5, 1..5] OF REAL.
Элемент, расположенный в 5-ой строке и первом столбце имеет имя A[5, 1].
Программа заполнения двухмерного массива 3 × 5 и поиска в нем наибольшего элемен-
та.
PROGRAM Maximum;
VAR i, j: Integer;
M: ARRAY [1..3, 1..5] OF Real;
max: Real;
BEGIN
FOR i:=1 TO 3 DO
FOR j:=1 TO 5 DO
BEGIN
WRITE('M[',i,',',j,']=');
READLN(M[i,j]);
END;
max:=M[1,1];
FOR i:=1 TO 3 DO
FOR j:=1 TO 5 DO
IF M[i,j]<max THEN max:=M[i,j];
WRITELN('Максимальный элемент=', max:7:4);
END.