如何重新排序二维数组的列?

时间:2014-12-10 19:38:41

标签: java

是否有一种简单的方法可以随机化二维数组中的列顺序?例如,我可以用它来随机化这个二维数组的列

int[][] dataArray = {{1, 1, 0, 1, 0, 0}, 
                     {0, 0, 1, 0, 1, 1},
                     {1, 1, 1, 1, 1, 1}, 
                    {0, 0, 0, 0, 1, 1}};

到目前为止,我一直试着运气不好。 我想要做的是使列1 2 3 4 5 6随机变成列2 3 1 6 5 4。 我已经尝试随机抽取数字并尝试使列符合顺序,但我似乎无法使其正常工作。

1 个答案:

答案 0 :(得分:0)

你总是可以构造一维数组,随机化其内容,然后重建一个二维数组。

int[] newArray = new int[a.length + b.length + c.length + d.length]; 
// where a, b, c, and d are the smaller arrays inside dataArray
System.arrayCopy(a, 0, newArray, 0, a.length);
System.arrayCopy(b, 0, newArray, a.length, b.length);
System.arrayCopy(c, 0, newArray, a.length + b.length, c.length);
System.arrayCopy(d, 0, newArray, a.length + b.length + c.length, d.length);

这将构造一个名为newArray的一维数组,其中包含所有较小数组的内容。

现在将该数组随机化为here

然后重建原始数组:

int newArray2d[][] = new int[5][4]; //do this dynamically based on the size of the first array.
for(int i=0; i<5;i++)
   for(int j=0;j<4;j++)
       array2d[i][j] = array1d[(j*10) + i];