如何有效地对多维Arrray进行排序

时间:2019-04-22 16:25:40

标签: java arrays sorting multidimensional-array bubble-sort

我被赋予一项任务,无需使用Array类中的预制函数(例如.sort),就可以将多维数组按升序排序。

我尝试向我的一些朋友征求意见...许多人将数组变成一维数组,以将一维数组排序然后又返回到多维数组的方式对其进行排序数组。

我只是想知道是否还有其他方法可以做到而不必经历这样的麻烦。

3 个答案:

答案 0 :(得分:0)

这是一个完整的示例,您可以尝试

if (_webHelper.IsRequestBeingRedirected || _webHelper.IsPostBeingDone)
{
    //redirection or POST has been done in PostProcessPayment
    //return Content("Redirected");

    return Redirect("http://localhost:15536/PaymentCODBooking/ProcessInternetPayment");
}

}]

答案 1 :(得分:0)

将多维数组按升序排序:

您可以按行或列对多维数组进行排序。

如果您不想展平将其转换为1-d的数组,那么这意味着您必须根据自己的选择遍历每一行或每一列,并应用快速排序(对于较小的数据集,性能更好,如果最佳选择枢轴)或合并排序。

因此,您可以同时使用O(nlogn)(考虑平均大小写),并说存在n行或n列,时间复杂度将为O(n^2(logn))

现在,以上假设是您要按行或按列排序。 如果要同时实现(行和列),最好将数组转换为1-d,然后应用sort然后再转换回。否则,按照上面的方法,时间复杂度可以达到O(n^2(logn)),但是在另一种情况下,它将是O((n+m)log(n+m)),其中nm为否。数组中的行和列的数量加上O(n+m)的空间复杂度。

在我看来,空间有点复杂,这样可以降低运行时间是可取的。

答案 2 :(得分:0)

我找到了解决方法...谢谢

public static void sortAscending(int array [] []){

    int temp = 0;

    for(int i = 0; i < array.length; i++) {
        for(int j = 0; j < array[i].length; j++) {
            for(int k = 0; k < array.length; k++) {
                for(int l = 0; l < array[k].length; l++) {
                    if(array[i][j] < array[k][l]) {
                        temp = array[i][j];
                        array[i][j] = array[k][l];
                        array[k][l] = temp;
                    }
                }
            }
        }
    }
}