【问题标题】:How to print a row wise sorted matrix in C++如何在 C++ 中打印按行排序的矩阵
【发布时间】:2013-07-03 08:42:48
【问题描述】:

我得到一个二维数字数组,其每一行都是单独排序的。我需要按排序顺序(升序)打印整个矩阵。谁能告诉如何有效地做到这一点及其时间复杂性。如果您会编码,请粘贴您的 C++ 代码。

【问题讨论】:

  • 需要澄清一下:每一行都已经排序了吗?以排序顺序打印矩阵是什么意思?您想按某种顺序或整个矩阵对行进行排序吗?举个例子会有所帮助。
  • 每一行都排序意味着如果我有一个大小为 2x5 的二​​维矩阵广告,第一行是:{2,8,14,34,134},第二行是 {3,5,23 ,45,89} 然后我需要将其打印为:2 3 5 8 14 23 34 45 89 134,将其推广为 mxn 矩阵
  • 基本上你需要做的是合并排序的合并步骤然后:personal.kent.edu/~rmuhamma/Algorithms/MyAlgorithms/Sorting/…

标签: c++ sorting matrix multidimensional-array


【解决方案1】:

此代码可能会有所帮助!

unsigned char arr[columnsize][rowsize];

unsigned char out[columnsize*rowsize];

for(unsigned int i=0; i<columnsize*rowsize; i++){
    char buffer=1;
    bool brk=false;
    for(unsigned int y=0; y<rowsize; y++){
        for(unsigned int x=0; x<columnsize; x++){
            if(arr[x][y] <= buffer){
                buffer = arr[x][y];
                arr[x][y] = 0;
                brk = true;
            }
            if(brk) break;
        }
        if(brk) break;
    }
    out[i] = buffer;
}

【讨论】:

  • 这是矩阵中元素数量的二次方,而归并排序合并步骤在元素数量方面是线性的。
  • 从我的角度来看,这不太复杂,也更容易理解。存在一些性能缺陷,但仍然给出了想要的结果
  • 这更容易理解,但他也要求复杂性和有效的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 2018-04-24
  • 1970-01-01
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多