Выполнить сортировкой методом выбора - C (СИ)
Формулировка задачи:
Выполнить сортировкой методом выбора
Разобрать программу, которая выводит целочисленную матрицу из n строк и m столбцов. Упорядочить все элементы матрицы таким образом, чтобы при чтении матрицы по строкам ее элементы образовывали отсортированный по убыванию массив. Вывести массив до и после сортировки.
Решение задачи: «Выполнить сортировкой методом выбора»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf("input count columns and rows the matrix: ");
size_t col, row;
scanf("%u %u", &col, &row);
size_t size = col * row;
int* matrix = (int*) malloc(sizeof(int) * size);
size_t i;
for (i = 0; i < size; ++i)
{
matrix[i] = rand() % 90 + 10;
}
for (i = 0; i < size; ++i)
{
printf("%d ", matrix[i]);
if (((i+1) % col) == 0)
{
printf("\n");
}
}
size_t j, max, tmp;
for (i = 0; i < (size - 1); ++i)
{
max = i;
for (j = i + 1; j < size; ++j)
{
if (matrix[max] < matrix[j])
{
max = j;
}
}
tmp = matrix[max];
matrix[max] = matrix[i];
matrix[i] = tmp;
}
printf("\n");
for (i = 0; i < size; ++i)
{
printf("%d ", matrix[i]);
if (((i+1) % col) == 0)
{
printf("\n");
}
}
system("pause");
free(matrix);
return 0;
}
Объяснение кода листинга программы
- Ввод количества столбцов и строк матрицы с помощью функции scanf.
- Выделение памяти под матрицу с помощью функции malloc.
- Заполнение матрицы случайными числами в диапазоне от 10 до 90 с помощью функции rand и оператора %.
- Вывод содержимого матрицы на экран с помощью цикла for и функции printf.
- Ввод количества столбцов и строк матрицы с помощью функции scanf.
- Сортировка матрицы методом выбора с помощью двух вложенных циклов for и операторов if и else.
- Вывод отсортированной матрицы на экран с помощью цикла for и функции printf.
- Вызов функции system для приостановки работы программы до нажатия клавиши.
- Освобождение памяти, выделенной под матрицу, с помощью функции free.
- Возврат значения 0, сигнализирующего о успешном завершении программы.