当前位置: 首页 > 知识库问答 >
问题:

Java:按不带数组的列对2D数组进行排序。排序()

贺皓
2023-03-14

我试图建立一个方法,将排序一个二维数组的双打按列。基于所提供的规范,此方法也不应该采用长度不等的行的粗糙数组。我正在使用双[][]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,

使用单独的打印方法输出结果时,数组似乎没有改变。我认为我的问题是,在进入下一列之前,如何检查每一行中的某一列,但我不确定在没有数组的情况下如何轻松做到这一点。sort()方法,此练习不允许使用该方法。

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;
                    }
                }
            }
        }
    }
}

共有2个答案

鲜于阳成
2023-03-14

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

程序完成:

>

  • 循环所有列
  • 选择你最喜欢的1D数组排序算法(看看这里)

    double[][] mdarray = {{3.0, 4.0, 1.0, 8.0}, {13.0, 2.0, 12.0, 9.0}};
    
    //loop all columns
    for(int col = 0; col < mdarray[0].length; col++){
    
        //loops all rows and use bubble sort algorithm in ascending order
        for(int i = 1; i < mdarray.length; i++){
    
            for(int j = i; j < mdarray.length; j++){
                if(mdarray[j - 1][col] > mdarray[j][col]){
                    //swap
                    double temp = mdarray[j][col];
                    mdarray[j][col] = mdarray[j-1][col];
                    mdarray[j-1][col] = temp;
                }
            }
        }
    }
    

    如果打印每行mdarray,输出将为:

    mdarray[0]: 3.0  2.0 1.0  8.0
    mdarray[1]: 13.0 4.0 12.0 9.0 
    

  • 太叔航
    2023-03-14

    实际上,您还切换了ij变量的边界。由于ji 1迭代,它应该获得高达mdarray.length的值,因此条件应该是j

    哦,还有我们在注释中提到的错误——当切换元素时,将temp变量分配给mdarray[j][k]

     类似资料:
    • 问题内容: 我想对整数的arraylist的arraylist进行排序,需要帮助吗? 我被告知,我需要实现比较器或可比对象,然后使用collection.sort对列表列表进行排序… 问题答案: 没有错误检查空列表,但是这里是。 使用Java 8,它变得更加简洁:

    • 问题内容: 我有一个包含多个数组的数组,我想根据这些数组中的某个字符串对数组进行排序。 如何按名称排序,以便 阿尔伯特排 在首位, 齐默尔曼排 在最后? 我知道如果可以使用整数进行排序,但是字符串使我毫无头绪,该怎么办。 谢谢您帮忙!:) 问题答案: 这可以通过将支持函数作为参数传递给方法调用来实现。 像这样:

    • 本文向大家介绍java对数组进行排序的方法,包括了java对数组进行排序的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java对数组进行排序的方法。分享给大家供大家参考。具体如下: 执行结果: 排序前:  12 24 25 4 9 68 45 7   排序后:  4 7 9 12 24 25 45 68 希望本文所述对大家的java程序设计有所帮助。

    • 问题内容: 我有一个数组数组: 需要按特定顺序进行: 3452342 5867867 7867867 1231233 我将如何去做?我之前已经对数组进行了排序,并阅读了许多其他文章,但它们始终基于比较(即valueA <valueB)。 感谢帮助。 问题答案: 您可以用来精确指示如何对数组进行排序。在这种情况下,可以在比较函数中使用该数组。 下面的示例使用a 使生活更轻松。 这项工作的关键是使要比

    • 问题内容: 请原谅我这是多余的还是超基本的。我要从R进入Python / Numpy,并且很难在脑海里翻转事物。 我有一个维数组,我想使用索引值的另一个n维数组进行排序。我知道我可以将其包装成一个循环,但是似乎应该有一种非常简洁的Numpyonic方式将其击败并提交。这是设置n = 2的问题的示例代码: 所以现在我有一个2 x 5的随机数数组和2 x 5的索引。我已经阅读了约10次帮助,但显然我的

    • 问题内容: 我有一个由数组组成的数组。我想通过子数组的属性对父数组进行排序。这是一个例子 我想通过在子数组中升序对父数组进行排序,因此在这种情况下,结果将是子数组颠倒(,)。使用众多的PHP排序函数中的任何一种,是否可能? 问题答案: 您可以将usort函数用作: