Отсортировать матрицу по заданному столбцу - 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; }

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

В этом коде реализуется сортировка матрицы по заданному столбцу, используя алгоритм сортировки пузырьком. Вот список действий, которые выполняются в коде:

  1. Создается двумерный массив (матрица) типа int** X размером N на M, где N - количество строк, M - количество столбцов.
  2. Матрица инициализируется нулями.
  3. В каждой строке матрицы X[i] случайным образом заполняются значения от 1 до 9.
  4. Выводится на экран содержимое матрицы X.
  5. Начинается сортировка матрицы по заданному столбцу (в данном случае - по первому столбцу).
  6. Для каждой строки матрицы X[i] находится минимальный элемент в этой строке (за исключением первого столбца, который уже отсортирован).
  7. Если найденный минимальный элемент находится не в первой позиции строки, то происходит обмен этого элемента с первым элементом строки.
  8. После завершения сортировки по всем строкам матрицы X, выводится на экран отсортированная матрица.
  9. Программа ожидает нажатия клавиши для завершения работы.

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


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

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

13   голосов , оценка 4.077 из 5
Похожие ответы