0

次の方法でJavaで多次元配列をソートする方法はありますか?

この配列構造を持ってみましょう。

int graph[][] = new int[edges][3];

ここで、すべてのエッジには 2 つの座標とその重みがあります。そして、すべてのエッジの重みに従って配列全体をソートする必要があります。参考までに、スパニングツリーを見つけるために必要です。ありがとう

4

2 に答える 2

2

次のようなものを使用できます。

Arrays.sort(graph, new Comparator<Integer[]>() {
             @Override
             public int compare(final Integer[] entry1, final Integer[] entry2) {
              // DO SORTING STUFF HERE
            } });
于 2012-10-13T16:01:51.680 に答える
1

Arrays.sortの使用とComparatorに問題があると思いますarray of array。これは、通常の配列ソートで行うのと同じように機能しますが、少し変更があります。

これはあなたがあなたの場合にこれを行う方法です。配列にはaが必要ですComparatorInteger[]-

    Integer graph[][] = new Integer[2][3];
    graph[0][0] = 2;
    graph[0][1] = 4;
    graph[0][2] = 3;

    graph[1][0] = 0;
    graph[1][1] = 1;
    graph[1][2] = 2;


    Arrays.sort(graph, new Comparator<Integer[]>() {
        @Override
        public int compare(Integer[] o1, Integer[] o2) {

            return o1[2] - o2[2];
        }
    });


    for (Integer[] outerArr: graph) {
        for (Integer val: outerArr) {
            System.out.print(val + " ");
        }
        System.out.println();
    }

プリント:-

0 1 2 
2 4 3 
于 2012-10-13T16:49:15.420 に答える