C 按字典顺序排列矩阵中的列
我一直在尝试对矩阵中的列进行排序(维度为m,n尝试此解决方案(仅适用于输入0-8),还使用了全局变量: 有多种解决方案。但这是最简单的一种。 我已将每列转换为整数值。然后气泡对整数进行排序。排序后,我将整数值转换为数字。(您必须知道如何将单个数字转换为多位数整数,将多位数整数转换为单位数。 注意:我为每个数字添加了一(1)。因为输入可以是零(0)。如果将0 0 2 1转换为整数,则只有21。前两个数字丢失。因此我添加了1。因此0 0 2 1将转换为1132。我为每个输入添加了(添加1)(排序后减去1)。因此它不会影响其他输入。请小心输入必须介于(0到8)C 按字典顺序排列矩阵中的列,c,function,sorting,matrix,lexicographic,C,Function,Sorting,Matrix,Lexicographic,我一直在尝试对矩阵中的列进行排序(维度为m,n尝试此解决方案(仅适用于输入0-8),还使用了全局变量: 有多种解决方案。但这是最简单的一种。 我已将每列转换为整数值。然后气泡对整数进行排序。排序后,我将整数值转换为数字。(您必须知道如何将单个数字转换为多位数整数,将多位数整数转换为单位数。 注意:我为每个数字添加了一(1)。因为输入可以是零(0)。如果将0 0 2 1转换为整数,则只有21。前两个数字丢失。因此我添加了1。因此0 0 2 1将转换为1132。我为每个输入添加了(添加1)(排序后减
#包括
#包括
#包括
int m,n;
int mat[10][10];;
整数生成数[10];
无效打印矩阵()
{
printf(“矩阵为:\n”);
int i,j;
对于(i=0;igeneratedNumber[j+1])
{
//交换元素
int temp=生成编号[j];
generatedNumber[j]=generatedNumber[j+1];
生成编号[j+1]=温度;
}
}
}
对于(i=0;i=0;j--)///按行从最后一个值到第一个值
{
mat[j][i]=(generatedColumnvalue%10)-1;///删除额外添加的1
generatedColumnvalue/=10;
}
}
}
int main()
{
printf(“输入行数:”);
scanf(“%d”、&m);
printf(“输入列数:”);
scanf(“%d”和“&n”);
随机_int();
打印矩阵();
排列();
打印矩阵();
返回0;
}在你的帖子中没有问题。问一个具体的问题。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m, n;
int mat[10][10];
void print_matrix()
{
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
void random_int()
{
int i, j;
srand((unsigned)time(NULL));
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
mat[i][j] = rand() % 5;
}
}
}
void arrange()
{
int i, j, k, a;
for (j = 0; j < n; ++j)
{
for (i = 0; i < m; ++i)
{
for (k = i + 1; k < m; ++k)
{
if (mat[i][j] < mat[k][j])
{
a = mat[i][j];
mat[i][j] = mat[k][j];
mat[k][j] = a;
}
}
}
}
}
printf("Input the number of rows : ");
scanf("%d", &m);
printf("Input the number of columns: ");
scanf("%d", &n);
random_int(mat[m][n]);
print_matrix(mat[m][n]);
arrange(mat[m][n]);
print_matrix(mat[m][n]);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int m, n;
int mat[10][10];
int generatedNumber[10];
void print_matrix()
{
printf("The matrix is:\n");
int i, j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
void random_int()
{
int i, j;
srand((unsigned)time(NULL));
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
mat[i][j] = rand() % 5;
}
}
}
void arrange()
{
int i, j, k, a;
for (j = 0; j < n; ++j)
{
int number = 0;
for (i = 0; i < m; ++i)
{
number = number * 10 + mat[i][j] + 1;///Adding one for avoiding zero(0)
}
generatedNumber[j] = number;
}
for(i = 0; i < n; i++)
{
for(j = 0; j < n-i-1; j++)
{
if( generatedNumber[j] > generatedNumber[j+1])
{
// swap the elements
int temp = generatedNumber[j];
generatedNumber[j] = generatedNumber[j+1];
generatedNumber[j+1] = temp;
}
}
}
for(i = 0; i < n; i++)///columwise
{
int generatedColumnvalue = generatedNumber[i];
for(j = m -1; j>= 0; j--)///row wise and fro last vaue to first
{
mat[j][i] = (generatedColumnvalue%10)-1;///removing extra added 1
generatedColumnvalue/=10;
}
}
}
int main()
{
printf("Input the number of rows : ");
scanf("%d", &m);
printf("Input the number of columns: ");
scanf("%d", &n);
random_int();
print_matrix();
arrange();
print_matrix();
return 0;