Отсортировать главные диагонали матрицы по возрастанию методом вставки - C (СИ)
Формулировка задачи:
Дана матрица размерностью nxn, содержащая целые числа. Отсортировать главные диагонали матрицы по возрастанию методом вставки.
Заранее благодарен!
Решение задачи: «Отсортировать главные диагонали матрицы по возрастанию методом вставки»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#define H 5
#define W 5
int main(){
int matrix[H][W] = {
{2,3,3,1,5},
{2,1,2,2,2},
{2,3,7,4,5},
{1,1,2,3,6},
{1,2,3,4,5}
};
int i,j,tmp;
for( i = 1; i < H ; i++ ){
tmp = matrix[i][i];
for( j = i; j>0&&matrix[j-1][j-1]>tmp; j--)matrix[j][j]=matrix[j-1][j-1];
matrix[j][j]=tmp;
}
for( i = 0 ; i < H; i++ ){
for( j = 0 ; j < W; j++)printf("%d ",matrix[i][j]);
printf("\n");
}
getch();
return 0;
}
Объяснение кода листинга программы
Код представлен на языке C и решает задачу сортировки главных диагоналей матрицы по возрастанию методом вставки. Список действий, которые выполняются в коде:
- Включаются необходимые заголовочные файлы:
stdio.h- для работы с вводом/выводом;conio.h- для работы с клавиатурой и мышью (в данном случае используется функцияgetch()для приостановки выполнения программы и получения ввода от пользователя).
- Определяются размеры матрицы:
H- количество строк;W- количество столбцов.
- Инициализируется матрица:
- Матрица
matrixзаполняется значениями.
- Матрица
- Сортировка главных диагоналей матрицы методом вставки:
- Внешний цикл
forпроходит по каждой строке матрицы, начиная со второй строки (индекс 1), так как первая строка уже будет содержать отсортированные значения. - Внутренний цикл
forпроходит по каждой позиции внутри текущей строки. Если значение в текущей позиции больше значения в предыдущей позиции (т.е. на диагонали влево и вверх), то значения меняются местами. - Значение на текущей позиции присваивается значению, которое было на предыдущей позиции.
- Внешний цикл
- Вывод отсортированной матрицы:
- Внутренний цикл
forпроходит по каждой строке матрицы. - Внешний цикл
forпроходит по каждому столбцу текущей строки. - Каждое значение матрицы выводится на экран через функцию
printf().
- Внутренний цикл
- Ожидание нажатия клавиши:
- Функция
getch()ожидает нажатия клавиши.
- Функция
- Возврат 0:
- Значение 0 возвращается в качестве кода завершения программы.