Сортировки методом вставки на языке 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

Ответы (0 шт):