【发布时间】:2016-06-25 19:36:37
【问题描述】:
我有一个由矩阵组成的三维 int 数组(立方体)。我的问题是,我想创建一个新的 3 维数组,我将在其中使用插入排序按最高值对矩阵进行排序。我不想在新多维数据集中保存值,但我想保存只保存矩阵的数量。这是一些例子,我想怎么做。希望你能理解我的想法:
int[][] matrix1={{10,50,10},{3,5,1},{100,500,800}};
int[][] matrix2={{30,30,30},{3,3,3},{300,300,300}};
int[][] matrix3={{20,20,20},{2,2,2},{200,200,200}};
int[][][] nonSortedMatrices={matrix1,matrix2,matrix3};
现在我想这样排序:
int[][] matrixWithHighestValue={{2,1,2},{2(or 1),1,2},{2,1,1}};
int[][] matrixSecHighestValue={{3,2,3},{1(or2),2,3},{3,2,2}};
int[][] matrixWithLowestValue={{1,3,1},{3,3,1},{1,3,3}};
int[][][] sortedMatrices={matrixWithHighestValue,matrixSecHighestValue,matrixWithLowestValue};
就是这样。希望很清楚。矩阵matrixWithHighestValue 将在每个地方包含三个(在这种情况下)矩阵中每个地方的最佳选择,我正在考虑如何做几个小时,但我无法解决这个问题。只认为我要使用的是插入排序,因为它是最快的方式,因为数据不是那么大。
我会非常感谢每一个建议。
【问题讨论】:
-
当你说“只有矩阵的数量”时,你想要索引,对吧?
-
按照您描述的方式,听起来 sortedMatrices 实际上应该只是一维整数数组。就像如果你发现 matrix2 > matrix1 > matrix3 你会想要:`int[] sortedIndices = {2, 1, 3]'。
-
是的,你是对的。我想这样写是因为我觉得这样更容易理解
-
不,我不想对矩阵进行排序。我想在每个地方保存最好的项目
-
所以每个地方都会有所不同,所以它必须是新的 3d 数组
标签: java arrays sorting matrix multidimensional-array