Сортировка двумерного массива по возрастанию - 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, указывая, что программа успешно завершилась.