Sorting 按排序顺序打印行和列排序矩阵的元素
我试图按排序顺序打印下面的矩阵,但似乎无法考虑任何最佳解决方案。你能帮忙吗Sorting 按排序顺序打印行和列排序矩阵的元素,sorting,math,matrix,Sorting,Math,Matrix,我试图按排序顺序打印下面的矩阵,但似乎无法考虑任何最佳解决方案。你能帮忙吗 1 2 3 4 2 3 4 5 4 7 8 9 5 6 9 10 下面是“排序”的一个示例,但您确实需要告诉我们“排序”对您意味着什么: 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 9, 9, 10 下面是可以为您实现这一点的代码(使用低效的“气泡排序”,它在这样的小数组上工作得很好): 如果您愿意使用额外的内存,则将其放入整数数组,然后使用选择排序打印相应的编号。如果对矩阵进行排序
1 2 3 4
2 3 4 5
4 7 8 9
5 6 9 10
下面是“排序”的一个示例,但您确实需要告诉我们“排序”对您意味着什么:
1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 9, 9, 10
下面是可以为您实现这一点的代码(使用低效的“气泡排序”,它在这样的小数组上工作得很好):
如果您愿意使用额外的内存,则将其放入整数数组,然后使用选择排序打印相应的编号。如果对矩阵进行排序(无论这意味着什么),它将是一个不同的矩阵。你最好给出更多的细节,并用一种语言标记。排序对你来说意味着什么?单个元素、行、列?您尝试过哪些方法?我希望输出像1 2 2 3 4 4 5 6 8 9 10它是按行和列排序的矩阵,即。,特定的行被排序,特定的列也被排序。您还需要告诉用于此的语言,以获得任何上下文,我正试图在CYes中完成这正是我想要的输出。您需要什么帮助?将二维阵列转换为一维阵列?排序1D数组?“最佳解决方案”对您意味着什么?数组的大小是可变的吗?你如何使用每一行和每一列都被排序的事实?@Yash-我没有使用这个“事实”。问题不清楚,也没有给出输入矩阵可能属性的参数(甚至没有输出的“排序”定义…)。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a[4][4] = {{ 1, 2, 3, 4},\
{ 2, 3, 4, 5},\
{ 4, 7, 8, 9},\
{ 5, 6, 9, 10}};
int ii, jj;
int *b, *p;
b = malloc(sizeof(a));
p = b; // copy pointer
// copy 2d into linear array:
for(ii = 0; ii< 4; ii++) {
for(jj = 0; jj < 4; jj++) {
*(p++) = a[ii][jj];
}
}
// now do bubble sort:
for(ii = 0; ii < 15; ii++) {
for(jj = ii+1; jj < 16; jj++) {
if(b[ii] > b[jj]) {
int temp = b[ii];
b[ii] = b[jj];
b[jj] = temp;
}
}
}
// print result:
for(ii = 0; ii < 15; ii++) {
printf("%d, ", b[ii]);
}
printf("%d\n", b[15]);
}
1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 7, 8, 9, 9, 10