首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:根据没有Arrays.sort()的列对2D数组进行排序

问Java:根据没有Arrays.sort()的列对2D数组进行排序
EN

Stack Overflow用户
提问于 2016-12-08 07:29:04
回答 2查看 2.1K关注 0票数 1

我正在尝试设置一个方法,它将按列排序一个二维的双倍数组。根据所提供的规范,该方法也不应采用长度不等的行的粗糙数组。我正在使用双mdarray = {{3.0,4.0,1.0,8.0},{13.0,2.0,12.0,9.0}来测试这一点。

使用打印方法,应该将其显示为

3.0,2.0,1.0,8.0,

13.0,4.0,12.0,9.0,

当使用单独的打印方法输出结果时,数组似乎没有变化。我认为我的问题是,在进入下一列之前,如何检查给定列的每一行,但如果没有Arrays.sort()方法,我不知道如何轻松完成,这在本练习中是不允许的。

代码语言:javascript
复制
public void sort(boolean byColumn)
{
    if(isRagged() == true)
    {
        System.out.println("Ragged arrays cannot be sorted by column.");
    }
    else
    {
        for(int i = 0; i < mdarray.length; i++)
        {
            for(int j = i + 1; j < mdarray.length - 1; j ++)
            {
                for(int k = 0; k < mdarray[i].length; k++)
                {
                    if(mdarray[i][k] > mdarray[j][k])
                    {
                        double temp = mdarray[i][k];
                        mdarray[i][k] = mdarray[j][k];
                        mdarray[i][k] = temp;
                    }
                }
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-08 08:22:22

实际上,您还切换了i和j变量的界限。由于j是从i+1迭代而来的,因此它应该获得到mdarray.length - 1的值,因此条件应该是j < mdarray.length,而i的上界应该是mdarray.length - 2,因此条件应该是i < mdarray.length - 1。

还有我们在注释中提到的错误--当切换元素时,将temp变量赋值给mdarray[j][k]。

票数 1
EN

Stack Overflow用户

发布于 2016-12-08 08:47:36

如您所知,您可以将2D数组视为一组列或行。这个程序必须对列进行排序,因此我们将把数组看作一组列。

该方案已完成:

  1. 循环所有列
  2. 选择您最喜欢的算法对一维数组进行排序(查看这里) 双mdarray = {{3.0,4.0,1.0,8.0},{13.0,2.0,12.0,9.0};//循环所有列的(int= 0;col < mdarray.length;col++){ //循环所有行,并使用气泡排序算法(int i= 1;i< mdarray.length;i++){ for(int j= i;j mdarrayj){ //交换双临时= mdarrayj;mdarrayj = mdarrayj-1;mdarrayj-1= temp;}}

如果您打印mdarray的每一行,则输出如下:

代码语言:javascript
复制
mdarray[0]: 3.0  2.0 1.0  8.0
mdarray[1]: 13.0 4.0 12.0 9.0 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41034025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档