Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按排序顺序打印行和列排序矩阵的元素_Sorting_Math_Matrix - Fatal编程技术网

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