Лабораторная работа № 9

Лабораторная работа №9

Задачи на сортировку двумерных массивов

Цель работы

Изучение алгоритмов сортировки двумерных массивов и их реализация на практике.

Теоретическая часть

Двумерный массив — это упорядоченная последовательность элементов, организованная в виде таблицы (матрицы).

Основные виды сортировки:

·         По строкам

·         По столбцам

·         По диагонали

·         По сумме строк

·         По количеству элементов

Практическая часть

Задание 1. Сортировка строк матрицы по возрастанию.

Создайте программу, которая сортирует каждую строку двумерного массива по возрастанию. Например, для матрицы 3x3:

Исходная матрица:

Результат:

5 2 8

2 5 8

3 9 1

1 3 9

7 4 6

4 6 7

 

Алгоритм:

1.    Ввод размеров матрицы

2.    Заполнение матрицы

3.    Сортировка каждой строки методом пузырька

4.    Вывод результата

Пример кода:

pascal

procedure SortRows(var A: array[,] of integer; n, m: integer);
var i, j, k: integer;
begin
  for i := 1 to n do
    for j := 1 to m-1 do
      for k := j+1 to m do
        if A[i,j] > A[i,k] then
        begin
          swap(A[i,j], A[i,k]);
        end;
end;

Задание 2. Сортировка столбцов по убыванию.

Сортировка столбцов матрицы по убыванию:
Напишите программу, которая сортирует каждый столбец матрицы по убыванию. Например:

Исходная матрица:

Результат:

4 2 6

8 7 9

1 5 3

4 5 6

8 7 9

1 2 3

Алгоритм:

1.    Ввод размеров матрицы

2.    Заполнение матрицы

3.    Сортировка каждого столбца

4.    Вывод результата

Пример кода:

pascal

procedure SortColumns(var A: array[,] of integer; n, m: integer);
var i, j, k: integer;
begin
  for j := 1 to m do
    for i := 1 to n-1 do
      for k := i+1 to n do
        if A[i,j] < A[k,j] then
        begin
          swap(A[i,j], A[k,j]);
        end;
end;

Задание 3. Сортировка главной диагонали.

Создайте программу, которая сортирует элементы главной диагонали матрицы по возрастанию. Например:

Исходная матрица:

Результат:

9 2 3

5 2 3

4 8 1

4 8 1

7 6 5

7 6 9

Алгоритм:

1.    Извлечение элементов диагонали

2.    Сортировка извлеченных элементов

3.    Возврат отсортированных элементов на место

Пример кода:

pascal

procedure SortDiagonal(var A: array[,] of integer; n: integer);
var i, j, temp: integer;
begin
  for i := 1 to n-1 do
    for j := i+1 to n do
      if A[i,i] > A[j,j] then
      begin
        temp := A[i,i];
        A[i,i] := A[j,j];
        A[j,j] := temp;
      end;
end;

Задание 4. Сортировка по сумме строк.

Напишите программу, которая сортирует строки матрицы по возрастанию суммы их элементов. Например:

Исходная матрица:

Результат:

1 2 3

1 2 3

4 5 6

4 5 6

7 8 9

7 8 9

Алгоритм:

1.    Вычисление сумм строк

2.    Сортировка строк по суммам

3.    Перестановка строк

Пример кода:

pascal

procedure SortBySum(var A: array[,] of integer; n, m: integer);
var i, j, k, sum1, sum2: integer;
begin
  for i := 1 to n-1 do
    for j := i+1 to n do
    begin
      sum1 := 0; sum2 := 0;
      for k := 1 to m do
      begin
        sum1 := sum1 + A[i,k];
        sum2 := sum2 + A[j,k];
      end;
      if sum1 > sum2 then
        for k := 1 to m do
          swap(A[i,k], A[j,k]);
    end;
end;

Задание 5. Сортировка по четным элементам.

Создайте программу, которая сортирует строки матрицы по количеству четных чисел в них. Например:

Исходная матрица:

Результат:

2 3 4

1 6 8

1 6 8

2 3 4

5 7 9

5 7 9

Алгоритм:

1.    Подсчет четных элементов в строках

2.    Сортировка строк по количеству четных

3.    Перестановка строк

Пример кода:

pascal

procedure SortByEven(var A: array[,] of integer; n, m: integer);
var i, j, k, even1, even2: integer;
begin
  for i := 1 to n-1 do
    for j := i+1 to n do
    begin
      even1 := 0; even2 := 0;
      for k := 1 to m do
      begin
        if not odd(A[i,k]) then inc(even1);
        if not odd(A[j,k]) then inc(even2);
      end;
      if even1 > even2 then
        for k := 1 to m do

Последнее изменение: понедельник, 20 Октябрь 2025, 09:24