將2D陣列製成一個單獨的簡單(1D)陣列(步驟1)。
然後使用Arrays.sort()方法對簡單數組進行排序(STEP 2)。
然後將2D數組的每個空間設置爲跨越(X空間將被更改的座標)的列數乘以2D陣列中每行的空間數。然後添加行號(空間將被更改的Y座標),您將獲得所需簡單字符串的索引(步驟3)。
我的打印方法在底部。
public static void sort2DArray(int[][] arrayName)
{
int[] simpleArray = new int[(arrayName[0].length)*(arrayName.length)];
for(int r = 0; r < arrayName.length; r++) //CYCLE THROUGH ROWS (Y VALUES)
{
for(int c = 0; c < arrayName[0].length; c++) //CYCLE THROUGH COLUMNS (X VALUES)
{
simpleArray[arrayName[0].length*r+c] = arrayName[r][c]; //*STEP 1*
}
}
Arrays.sort(simpleArray); //*STEP 2*
for(int r = 0; r < arrayName.length; r++) //CYCLE THROUGH ROWS (Y VALUES)
{
for(int c = 0; c < arrayName[0].length; c++) //CYCLE THROUGH COLUMNS (X VALUES)
{
arrayName[r][c] = (simpleArray[(r * arrayName[0].length) + c ]); //*STEP 3*
}
}
}
public static void print2DArrayAsTable(int[][] arrayName) //METHOD TO PRINT A 2D ARRAY AS A TABLE
{
for(int c = 0; c < arrayName.length; c++) //CYCLE THROUGH COLUMNS (X VALUES)
{
for(int r = 0; r < arrayName[0].length; r++) //CYCLE THROUGH ROWS (Y VALUES)
{
p.o(arrayName[c][r] + " "); //PRINT INDIVIDUAL ARRAY SPACE VALUE
}
p.l();
}
}
你能描述一下2個dim陣列的「順序」意味着什麼嗎?是否有一列或多列用於確定已排序的2個暗淡陣列? – NormR
可能是這個幫助http://stackoverflow.com/questions/20931669/sort-a-2d-array-in-c-using-built-in-functionsor-any-other-method – prime
這有一個答案。 http://stackoverflow.com/questions/18705127/how-to-sort-a-2d-array/41853842#41853842 – prime