我被赋予一项任务,无需使用Array类中的预制函数(例如.sort),就可以将多维数组按升序排序。
我尝试向我的一些朋友征求意见...许多人将数组变成一维数组,以将一维数组排序然后又返回到多维数组的方式对其进行排序数组。
我只是想知道是否还有其他方法可以做到而不必经历这样的麻烦。
答案 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))
,其中n
和m
为否。数组中的行和列的数量加上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;
}
}
}
}
}
}