-2

2D 配列の並べ替えについて助けが必要です。2行の配列があります

[5, 3, 4, 1, 2]
[10,20,30,40,50]

そして、次のように並べ替える必要があります。

[1, 2, 3, 4, 5]
[40,50,20,30,10]

バブルソートでそれを行う方法は知っていますが、クイックソートなどのより高速なアルゴリズムが必要です。

これが私のバブルソートコードです

   for (int i = 0; i < length-1; i++) {
         for (int j = 0; j < length-i-1; j++) { 

            if (array[0][j] > array[0][j+1]) {

               for (int k = 0; k < 2; k++) {
               int tmp = array[k][j];
               array[k][j] = array[k][j+1];
               array[k][j+1]=tmp;
               }
           }
       }
    }
4

4 に答える 4

4

次元配列を転置 Java 多次元配列 転置

Arrays.sort(T[] a, Comparator<? super T> c)コンパレータが各行のインデックス 0 で比較する場所を使用します

結果を再度転置します。

例えば

から:[5,3,4,1,2] [10,20,30,40,50]

入手します[5, 10] [3, 20] [4, 30] [1, 40] [2, 50]

次にそれらを並べ替えます[1, 40] [2, 50] [3, 20] [4, 30] [5, 10]

次に、再び次のように転置します。[1,2,3,4,5] [40,50,20,30,10]

または自分でクイックソートを実装します。

于 2013-09-09T19:12:25.250 に答える
1

編集(OPが処方を変更した後):

そのすべてを Map に収集してから、キーで並べ替えることができます。Map への収集は O(n) であり、順序付けられた Map 実装を使用して無料で並べ替えを行うことができます。転置は私にはより高価に見えます

于 2013-09-09T19:11:19.940 に答える