Сортировка двумерного массива по возрастанию - C (СИ)
Формулировка задачи:
Как сортировать двумерный массив по возрастанию (полностью, а не только строки или столбцы)? То есть из такого массива
4 6 2
7 5 9
1 5 8
сделать такой
1 2 4
5 5 6
7 8 9
Решение задачи: «Сортировка двумерного массива по возрастанию»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <locale.h> #define n 10 #define m 7 int main(){ setlocale(LC_ALL,"rus"); srand(time(0)); int array_a[n][m]; int buf; printf("Исходная матрица:\n"); for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ array_a[i][j] = rand()%9+1; printf("%d ", array_a[i][j]); } printf("\n"); } printf("\n\n"); for(int k = 0; k < n; k++){ for(int s = 0; s < m; s++){ for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(array_a[k][s] < array_a[i][j]){ buf = array_a[k][s]; array_a[k][s] = array_a[i][j]; array_a[i][j] = buf; } } } } } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ printf("%d ", array_a[i][j]); } printf("\n"); } return 0; }
Объяснение кода листинга программы
В этом коде происходит сортировка двумерного массива по возрастанию. Вот список элементов кода, выделенных кавычками:
Исходная матрица:
- это комментарий, описывающий блок кода, который выводит исходную матрицу.array_a[i][j] = rand()%9+1;
- это строка кода, которая заполняет двумерный массив случайными числами от 1 до 9.printf(
%d, array_a[i][j]);
- это строка кода, которая выводит значение элемента массива в формате строки, с пробелом после каждого значения.for(int k = 0; k < n; k++){
- это начало цикла, который выполняет сортировку массива.if(array_a[k][s] < array_a[i][j]){
- это условие, которое проверяет, является ли элемент в позиции (k,s) меньше элемента в позиции (i,j).buf = array_a[k][s];
- это строка кода, которая сохраняет значение элемента в переменной buf перед его перемещением в позицию (i,j).array_a[k][s] = array_a[i][j];
- это строка кода, которая перемещает значение элемента из позиции (i,j) в позицию (k,s).array_a[i][j] = buf;
- это строка кода, которая сохраняет значение buf в позиции (i,j).}
- это конец условия, которое проверяет, является ли элемент в позиции (k,s) меньше элемента в позиции (i,j).for(int i = 0; i < n; i++){
- это начало цикла, который выводит отсортированный массив.printf(
%d, array_a[i][j]);
- это строка кода, которая выводит значение элемента массива в формате строки, с пробелом после каждого значения.}
- это конец цикла, который выводит отсортированный массив.return 0;
- это строка кода, которая завершает программу и возвращает 0, указывая, что программа успешно завершилась.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д