Отсортировать столбцы по убыванию - C (СИ)
Формулировка задачи:
Задан двухмерныймассив размерности n. Отсортировать массив, согласно параметров
размерность массива
0...25
знак элементов+
Происхождение элементов массиваслучайние
Границы значений переменных0...25
Условие сортировкаОтсортировать столбцы по убыванию
Решение задачи: «Отсортировать столбцы по убыванию»
textual
Листинг программы
#include <vector>
#include <cstdlib>
#include <ctime>
#include <algorithm>
int main(int argc, char *argv[])
{
std::srand (time(NULL));
std::vector<std::vector<int>> arr;
int N = -1;
while (!(0 <= N && N <= 25))
{
std::cin >> N;
}
arr.resize(N);
for (unsigned int i = 0; i < arr.size(); i++)
{
arr[i].resize(N);
for (unsigned int j = 0; j < arr.size(); j++)
arr[i][j] = std::rand() % 26;
}
for (unsigned int i = 0; i < arr.size(); i++)
{
for (unsigned int j = 0; j < arr.size(); j++)
std::cout << arr[i][j] << " ";
std::cout << std::endl;
}
std::cout << std::endl;
//Сортировка вставками
for (unsigned int k = 0; k < arr.size(); k++)
for(unsigned int i = 1; i < arr.size(); i++)
for(unsigned int j = i; j > 0 && arr[j - 1][k] < arr[j][k]; j--)
std::swap(arr[j - 1][k], arr[j][k]);
for (unsigned int i = 0; i < arr.size(); i++)
{
for (unsigned int j = 0; j < arr.size(); j++)
std::cout << arr[i][j] << " ";
std::cout << std::endl;
}
return 0;
}
Объяснение кода листинга программы
В этом коде генерируется случайная двумерная матрица (25x25) целых чисел от 0 до 25, и она выводится на экран. Затем происходит сортировка матрицы вставками (с помощью трех вложенных циклов) по убыванию (от большего к меньшему). После сортировки матрица снова выводится на экран.