Сортировки методом вставки на языке C++
Дан входной файл в котором в первой строке написан порядок матрицы, а ниже сама матрица. нужно отсортировать элементы на диагоналях, параллельных побочной, по возрастанию. Сортировку выполнить методом вставки.
#include <iostream>
#include <fstream>
using namespace std;
int main() {
ifstream inputFile("input.txt");
if (!inputFile.is_open()) {
cout << "ERROR" << endl;
return 1;
}
int n;
inputFile >> n;
int** matrix = new int* [n];
for (int i = 0; i < n; ++i) {
matrix[i] = new int[n];
for (int j = 0; j < n; ++j) {
inputFile >> matrix[i][j];
}
}
// Меняем местами элементы диагоналей, параллельных побочной
// Меняем местами элементы диагоналей, параллельных побочной
for (int i = 1; i < n - 1; ++i) {
int j = i;
while (j > 0 && (i + j) < n && matrix[i + j][j] < matrix[j][i + j]) {
int temp = matrix[i + j][j];
matrix[i + j][j] = matrix[j][i + j];
matrix[j][i + j] = temp;
j--;
}
}
// Вывод матрицы с измененными диагоналями
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
cout << matrix[i][j] << "\t";
}
cout << endl;
}
return 0;
}
4
1 5 3 4
2 6 7 11
9 10 14 12
13 8 15 16
Выход:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16