Сортировка столбцов матрицы по наименьшим элементам столбцов

Дана действительная матрица размером m*n; упорядочить (переставить) столбцы матрицы по неубыванию значений наименьших элементов столбцов матрицы. Разрешается использовать дополнительный массив. Задание №17 (Сортировка массивов). (см. "Сборник задач для начинающего программиста").

Алгоритм:
1)Построение произвольного массива размерности m*n и вывод его на экран;
2)Создаем дополнительный массив tmp, в который заносим минимальные значения каждого столбца;
3)Сравниваем минимальные значения столбцов и сортируем их в порядке неубывания, соот-но перемещая столбцы;
4)Вывод на экран отсортированного массива.

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define m 5 //Количество строк
#define n 6 //Количество столбцов
 
int main() {
        int M[m][n];
        int tmp[n];
        int t,i,j,k, min;
 
        randomize();            //Создаем произвольный массив размерности m*n
        for(i=0;i<m;i++) {
                for (j=0;j<n;j++) {
                        M[i][j]=random(99);
                }
        }
 
        printf("Initial matrix:\n\n");  //Выводим исходный массив на экран
        for (i=0;i<m;i++) {
                for (j=0;j<n;j++)
                        printf("%d\t", M[i][j]);
                printf("\n");
        }
 
                                /*Создаем дополнительный массив tmp,
                                в который заносим минимальные значения
                                каждого столбца*/
        for(j=0;j<n;j++) {
                for(i=1, min=M[0][j];i<m;i++) {
                        if (min>M[i][j]) {
                                min=M[i][j];
                        }
                }
                tmp[j]=min;
        }
 
 
                                /*В качестве наглядности, выводим
                                исходный массив минимальных значений*/
        printf("Min numbers:\n");
        for (j=0;j<n;j++) {
                printf("%d\t", tmp[j]);
        }
 
                                /*Сравниваем минимальные значения столбцов
                                и сортируем их в порядке неубывания, соот-но
                                перемещая столбцы*/
        for (int i=0;i<n-1;i++) {
                for (int j=i+1;j<n;j++) {
                        if (tmp[i]>tmp[j]) {
                                t=tmp[i];       //Сортировка минимальных значений
                                tmp[i]=tmp[j];
                                tmp[j]=t;
                                for (k=0;k<m;k++) {     //Соот-ная сортировка
                                        t=M[k][i];      //столбцов
                                        M[k][i]=M[k][j];
                                        M[k][j]=t;
                                }
                        }
                }
        }
 
 
        printf("\n\nResult matrix:\n\n");//Выводим получившийся массив на экран
        for (i=0;i<m;i++) {
                for (j=0;j<n;j++)
                        printf("%d\t", M[i][j]);
                printf("\n");
        }
        printf("Min numbers:\n");       //А так же массив минимальных значений,
        for (j=0;j<n;j++) {             //полученный после сортировки
                printf("%d\t", tmp[j]);
        }
 
 
        getch();                        //Даем возможность понаблюдать за работой
        return 0;
        }

Ключевые слова: 
массив, сортировка, наименьший элемент
ВложениеРазмер
N17.rar886 байтов