Сортировка двумерного массива по возрастанию - 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;
}

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

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

  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
Похожие ответы