Скачать презентацию Сортировка матриц Разновидности сортировок матриц Частичная Скачать презентацию Сортировка матриц Разновидности сортировок матриц Частичная

15_Сортировка матриц.ppt

  • Количество слайдов: 15

Сортировка матриц Сортировка матриц

Разновидности сортировок матриц • Частичная сортировка предполагает сортировку отдельных частей матрицы, независимо от других Разновидности сортировок матриц • Частичная сортировка предполагает сортировку отдельных частей матрицы, независимо от других частей. • Полная сортировка матрицы заключается в том, что в одной процедуре сортировки участвуют все элементы матрицы.

Задачи частичной сортировки • Сортировка каждой строки или каждого столбца независимо от других. • Задачи частичной сортировки • Сортировка каждой строки или каждого столбца независимо от других. • Сортировка одной из диагоналей матрицы. • Сортировка строк или столбцов матрицы по значению первого элемента. • Сортировка строк или столбцов матрицы по сумме элементов.

procedure Sort. Matr (var a: TMatr 10 x 10; n. Row, n. Col: integer); procedure Sort. Matr (var a: TMatr 10 x 10; n. Row, n. Col: integer); var i, j, integer; begin sum. Row(a, n. Row, n. Col); for i: = 1 to n. Row do for j : = i + 1 to n. Row do if a[ i, n. Col+1] > a[ j, n. Col+1] then change. Row(a, n. Col, i, j ); end;

procedure sum. Row (var a: TMatr 10 x 10; n. Row, n. Col: integer); procedure sum. Row (var a: TMatr 10 x 10; n. Row, n. Col: integer); var i, j integer; begin for i: = 1 to n. Row do begin a[ i, n. Col+1]: =0; for j : = 1 to n. Col do a[ i, n. Col+1]: = a[ i, n. Col+1] + a[ i, j ]; end;

procedure change. Row (var a: TMatr 10 x 10; n. Col, r 1, r procedure change. Row (var a: TMatr 10 x 10; n. Col, r 1, r 2: integer); var j, buf: integer; begin for j : = 1 to n. Col+1 do begin buf : = a[r 1, j ]; a[r 1, j ] : = a[r 2, j ]; a[r 2, j ] : = buf; end;

Полная сортировка матриц Такая сортировка обеспечивает расположение элементов матрицы по возрастанию или убыванию в Полная сортировка матриц Такая сортировка обеспечивает расположение элементов матрицы по возрастанию или убыванию в направлении заданного способа обхода матрицы: • По строкам сверху вниз и слева направо, или снизу вверх и справа налево, или змейкой. • То же самое по столбцам. • То же самое по линиям параллельным главной или вспомогательной диагоналям. • Углом, вершина которого находится на главной или вспомогательной диагонали. • Спиралью от краев к центру.

Реализация сортировки • • Полную сортировку матрицы всегда можно свести к сортировке массива. Для Реализация сортировки • • Полную сортировку матрицы всегда можно свести к сортировке массива. Для этого следует: Переписать элементы матрицы в массив в любом порядке. Затем массив отсортировать. После этого элементы массива нужно последовательно переписать в матрицу, обходя ее по заданному маршруту. Таким образом, в общем случае проблема полной сортировки матрицы сводится к реализации обхода ее элементов по требуемому маршруту

Переписывание матрицы в массив Procedure Matr. To. Array(m: TMatr. Int 10 x 10; n. Переписывание матрицы в массив Procedure Matr. To. Array(m: TMatr. Int 10 x 10; n. Row, n. Col: integer; var a: TArray 100); var n, i, j: integer; begin n : = 0; for i : = 1 to n. Row do for j : = 1 to n. Col do begin n : = n + 1; a[ n ] : = m[ i, j ]; end;

Реализация процедур маршрутизации Процедура маршрутизации состоит в том, что внутри цикла прохода по отсортированному Реализация процедур маршрутизации Процедура маршрутизации состоит в том, что внутри цикла прохода по отсортированному массиву необходимо последовательно вычислять координаты соответствующих элементов матрицы

Расчетный способ маршрутизации В этом случае координаты элемента матрицы вычисляются по индексу массива row: Расчетный способ маршрутизации В этом случае координаты элемента матрицы вычисляются по индексу массива row: =( (i-1) div n. Col ) + 1; col: =(i-1) mod n. Col + 1;

procedure fill. Hrz. Line(var m: TMatr. Int 10 x 10; n. Row, n. Col: procedure fill. Hrz. Line(var m: TMatr. Int 10 x 10; n. Row, n. Col: integer; ar: TArray 100); var i, row, col: integer; begin for i : = 1 to n. Row * n. Col do begin row: =( (i-1) div n. Col ) + 1; col: =(i-1) mod n. Col + 1; m[row, col] : = ar[i]; end;

Моделирование маршрута В этом случае индекс элемента массива обычно не используется. Координаты элемента матрицы Моделирование маршрута В этом случае индекс элемента массива обычно не используется. Координаты элемента матрицы вычисляются исходя из их предыдущих значений с учетом особенностей маршрута

Уголком, сверху – вниз – налево, от начала главной диагонали Уголком, сверху – вниз – налево, от начала главной диагонали

procedure fill. Corner. Top. Left(var m: TMatr. Int 10 x 10; n. Row, n. procedure fill. Corner. Top. Left(var m: TMatr. Int 10 x 10; n. Row, n. Col: integer; ar: TArray 100); var i, row, col: integer; begin row: =1; col: =1; for i: =1 to n. Row*n. Col do begin m[row, col] : = ar[i]; if col = 1 then begin col : = row + 1; row : = 1; end else if row < col then row : = row + 1 else col : = col - 1; end;