Отсортировать матрицу по заданному столбцу - C (СИ)
Формулировка задачи:
Не пойму, подскажите, как отсортировать двумерный массив по заданному столбцу? (т.е. как поменять строки местами, а не только значения строк в заданном столбце)
Решение задачи: «Отсортировать матрицу по заданному столбцу»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <memory.h> #define N 10 #define M 20 void swap(int& n1, int& n2); int main() { int** X = new int*[N]; memset((void*)X, 0x00, 4 * N); for (int i = 0; i < N; i++) { X[i] = new int[M]; for (int j = 0; j < M; j++) X[i][j] = rand() % 9 + 1; } for (int z1 = 0; z1 < N; z1++) { for (int z2 = 0; z2 < M; z2++) printf("%d ",X[z1][z2]); printf("\n"); } printf("\n"); for (int v = 0; v < M; v++) for (int q = 0; q < N; q++) { int min = q; for (int k = q+1; k < N; k++) min = (X[k][v] < X[min][v]) ? k : min; swap(X[q][v],X[min][v]); } for (int t1 = 0; t1 < N; t1++) { for (int t2 = 0; t2 < M; t2++) printf("%d ",X[t1][t2]); printf("\n"); } _getch(); } void swap(int& n1, int& n2) { int _tn = n1; n1 = n2; n2 = _tn; }
Объяснение кода листинга программы
В этом коде реализуется сортировка матрицы по заданному столбцу, используя алгоритм сортировки пузырьком. Вот список действий, которые выполняются в коде:
- Создается двумерный массив (матрица) типа int** X размером N на M, где N - количество строк, M - количество столбцов.
- Матрица инициализируется нулями.
- В каждой строке матрицы X[i] случайным образом заполняются значения от 1 до 9.
- Выводится на экран содержимое матрицы X.
- Начинается сортировка матрицы по заданному столбцу (в данном случае - по первому столбцу).
- Для каждой строки матрицы X[i] находится минимальный элемент в этой строке (за исключением первого столбца, который уже отсортирован).
- Если найденный минимальный элемент находится не в первой позиции строки, то происходит обмен этого элемента с первым элементом строки.
- После завершения сортировки по всем строкам матрицы X, выводится на экран отсортированная матрица.
- Программа ожидает нажатия клавиши для завершения работы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д