我做了一個二維數組,它看起來像這樣和現在一樣:排序二維數組,數字應該是連續
(3,0)
(0,1)
(3,1)
(0,2)
(3,2)
(0,3)
(1,3)
(2,3)
(3,3)
的問題是,我想知道如何將一個二維數組排序,以便它將會得到如下結果:
(0,0)
(0,1)
(0,2)
(0,3)
(1,3)
(2,3)
(3,3)
(3,2)
(3,1)
(3,0)
其中每個座標在座標之前或之後至少有一個相同的數字。
編輯:
我想短信息道歉。無論如何,我通過@khaled_gomaa嘗試了代碼,但沒有提供我想要的輸出,但我很感謝他的幫助!
import java.util.Arrays; import java.util.Comparator;
public class Asdf {
public static void main(final String[] args) {
final int[][] data = new int[][] { new int[] { 0, 0 },
new int[] { 3, 0 }, new int[] { 0, 1 }, new int[] { 3, 1 },
new int[] { 0, 2 }, new int[] { 3, 2 }, new int[] { 0, 3 },
new int[] { 1, 3 }, new int[] { 2, 3 }, new int[] { 3, 3 } };
for (int[] indiv : data) {
System.out.println("(" + indiv[0] + "," + indiv[1] + ")");
}
Arrays.sort(data, new Comparator<int[]>() {
@Override
public int compare(final int[] entry1, final int[] entry2) {
if (entry1[0] == entry2[0]) {
if (entry1[1] > entry2[1]) {
return 1;
} else {
return -1;
}
} else {
if (entry1[0] > entry2[0]) {
return 1;
} else {
return -1;
}
}
}
});
System.out.println();
for (int i = 0; i < data.length; i++) {
int indiv[] = data[i];
System.out.println("(" + indiv[0] + "," + indiv[1] + ")");
}
}
}
輸出:
(0,0)
(0,1)
(0,2)
(0,3)
(1,3)
(2,3)
(3,0)
(3,1)
(3,2)
(3,3)
對不起。我需要在這之後不久做一些事情,所以我不得不衝過去,這就是爲什麼我的帖子中只有很少的信息。 – Kyle