Переписать двумерный массив в одномерный и отсортировать его в порядке убывания (методом выбора) - C (СИ)
Формулировка задачи:
Разработать программу, что переписывает двумерный массив в одномерный и сортирует его в порядке убывания. Использовать метод выбора. Помогите, код желательно не С++ а Си
Решение задачи: «Переписать двумерный массив в одномерный и отсортировать его в порядке убывания (методом выбора)»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int intcmp(const void *e1, const void *e2)
{
// возрастание return *(int *) e1 - *(int *) e2;
// убывание
return -(*(int *) e1 - *(int *) e2);
}
int main()
{
int mas[][5] = {
{1,2,3,4,5},
{6,7,8,9,10},
{11,12,13,14,15},
{16,17,18,19,20}
};
int x[20];
int i, j, n, k = 0;
for(i = 0; i < sizeof mas / sizeof *mas; ++i)
for(j =0; j < sizeof mas[0] / sizeof **mas; ++j)
{
x[k] = mas[i][j];
++k;
}
n = sizeof x / sizeof *x;
for(i = 0; i < n; ++i) printf("%4d", x[i]);// выводим массив
qsort(x, n, sizeof(int), intcmp); // изменяем значения массива
printf("\n\n");
for(i = 0; i < n; ++i) printf("%4d", x[i]); // выводим новый массив
return 0;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Создаём функцию сортировки, использующую метод выбора
- Задаём исходный двумерный массив
- Создаём одномерный массив для копирования
- Инициализируем счётчик для копирования
- Проходим по всем элементам исходного массива и копируем их в новый массив
- Вычисляем размер нового массива
- Сортируем новый массив методом выбора
- Выводим отсортированный массив на экран
- Возвращаем 0, чтобы программа завершилась успехом