Дана действительная матрица размером m*n; упорядочить (переставить) столбцы матрицы по неубыванию значений наименьших элементов столбцов матрицы. Разрешается использовать дополнительный массив. Задание №17 (Сортировка массивов). (см. "Сборник задач для начинающего программиста"). Алгоритм: #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; }
Ключевые слова:
массив, сортировка, наименьший элемент
|
|||||||