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