Как сделать сортировку двухмерного массива по столбцам?

Для сортировки двухмерного массива по столбцам в языке программирования C можно использовать алгоритм сортировки вставками. Данный алгоритм позволяет отсортировать элементы массива по одному столбцу за раз, применяя принцип "разделяй и властвуй".

Для начала, определим функцию сортировки вставками. Она будет принимать на вход двухмерный массив и номер столбца, по которому нужно произвести сортировку. Функция будет изменять сам массив, поэтому передадим его в качестве указателя:

void sortColumn(int (*arr)[], int col, int rows) {
    int i, j;
    int key;

    for (i = 1; i < rows; i++) {
        key = arr[i][col];
        j = i - 1;

        /* Перемещаем все элементы, большие ключа, на одну позицию вперед */
        while (j >= 0 && arr[j][col] > key) {
            arr[j + 1][col] = arr[j][col];
            j = j - 1;
        }
        arr[j + 1][col] = key;
    }
}

Теперь мы можем использовать данную функцию в основном коде программы для сортировки столбцов массива. Для примера создадим и заполним случайными числами двухмерный массив 4x4:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void sortColumn(int (*arr)[], int col, int rows);

int main() {
    int arr[4][4];
    int i, j;

    srand(time(0));
    printf("Исходный массив:n");
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            arr[i][j] = rand() % 100;  // Генерируем случайное число от 0 до 99
            printf("%4d ", arr[i][j]);
        }
        printf("n");
    }

    // Сортировка столбцов
    for (j = 0; j < 4; j++) {
        sortColumn(arr, j, 4);
    }

    printf("nОтсортированный массив:n");
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            printf("%4d ", arr[i][j]);
        }
        printf("n");
    }

    return 0;
}

В приведенном коде мы сначала создаем и заполняем двухмерный массив случайными числами от 0 до 99. Затем применяем функцию sortColumn() для сортировки каждого столбца по отдельности. Функция применяется в цикле для каждого столбца массива.

На выходе получаем двухмерный массив, отсортированный по столбцам. Результат выводится на экран.

Итак, приведенный код эффективно сортирует двухмерный массив по столбцам, используя алгоритм сортировки вставками. Вы можете использовать этот код в своих программах на языке программирования C для сортировки двухмерных массивов по столбцам.