Сортировка двумерного массива по возрастанию - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как сортировать двумерный массив по возрастанию (полностью, а не только строки или столбцы)? То есть из такого массива 4 6 2 7 5 9 1 5 8 сделать такой 1 2 4 5 5 6 7 8 9

Решение задачи: «Сортировка двумерного массива по возрастанию»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <locale.h>
  5.  
  6. #define n 10
  7. #define m 7
  8. int main(){
  9.     setlocale(LC_ALL,"rus");
  10.     srand(time(0));
  11.  
  12.     int array_a[n][m];
  13.     int buf;
  14.  
  15.     printf("Исходная матрица:\n");
  16.     for(int i = 0; i < n; i++){
  17.         for(int j = 0; j < m; j++){
  18.             array_a[i][j] = rand()%9+1;
  19.             printf("%d ", array_a[i][j]);
  20.         }
  21.         printf("\n");
  22.     }
  23.  
  24.     printf("\n\n");
  25.     for(int k = 0; k < n; k++){
  26.         for(int s = 0; s < m; s++){
  27.             for(int i = 0; i < n; i++){
  28.                 for(int j = 0; j < m; j++){
  29.                     if(array_a[k][s] < array_a[i][j]){
  30.                         buf = array_a[k][s];
  31.                         array_a[k][s] = array_a[i][j];
  32.                         array_a[i][j] = buf;
  33.                     }
  34.                 }
  35.             }
  36.         }
  37.     }
  38.  
  39.     for(int i = 0; i < n; i++){
  40.         for(int j = 0; j < m; j++){
  41.             printf("%d ", array_a[i][j]);
  42.         }
  43.         printf("\n");
  44.     }
  45.  
  46.     return 0;
  47. }

Объяснение кода листинга программы

В этом коде происходит сортировка двумерного массива по возрастанию. Вот список элементов кода, выделенных кавычками:

  1. Исходная матрица: - это комментарий, описывающий блок кода, который выводит исходную матрицу.
  2. array_a[i][j] = rand()%9+1; - это строка кода, которая заполняет двумерный массив случайными числами от 1 до 9.
  3. printf(%d , array_a[i][j]); - это строка кода, которая выводит значение элемента массива в формате строки, с пробелом после каждого значения.
  4. for(int k = 0; k < n; k++){ - это начало цикла, который выполняет сортировку массива.
  5. if(array_a[k][s] < array_a[i][j]){ - это условие, которое проверяет, является ли элемент в позиции (k,s) меньше элемента в позиции (i,j).
  6. buf = array_a[k][s]; - это строка кода, которая сохраняет значение элемента в переменной buf перед его перемещением в позицию (i,j).
  7. array_a[k][s] = array_a[i][j]; - это строка кода, которая перемещает значение элемента из позиции (i,j) в позицию (k,s).
  8. array_a[i][j] = buf; - это строка кода, которая сохраняет значение buf в позиции (i,j).
  9. } - это конец условия, которое проверяет, является ли элемент в позиции (k,s) меньше элемента в позиции (i,j).
  10. for(int i = 0; i < n; i++){ - это начало цикла, который выводит отсортированный массив.
  11. printf(%d , array_a[i][j]); - это строка кода, которая выводит значение элемента массива в формате строки, с пробелом после каждого значения.
  12. } - это конец цикла, который выводит отсортированный массив.
  13. return 0; - это строка кода, которая завершает программу и возвращает 0, указывая, что программа успешно завершилась.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы