2017-11-30 14 views
0

N^2 X N^2行列をN×Nブロックに分割すると、左から右、上から下にソートする必要があります。例えば行列のブロックをソートするJava

:それは、その後ダウン13,14の電気ショック療法のための11,12からどのようになる

int[][] matrix1 = {{11,12,13,14}, 
          {15,16,17,18}, 
          {19,20,21,22}, 
          {23,24,25,26}} ; 

    int[][] sortedBlock= {{11, 12, 15, 16}, 
         {13, 14, 17, 18}, 
         {19, 20, 23, 24}, 
         {21, 22, 25, 26}} ; 

    int[][] matBlocks1 = TasksArrays.blocks (matrix1, 2) ; 

ノート。 (matrix1,2)の2は、各ブロックの行と列にいくつの数字があるかを示しています。つまり、NxNブロックの 'n'を表します。

コードの私の最初の行はなければなりません:

public static int[][] blocks (int[][] matrix, int sqrtN) 

私は私を(インデックス分)を支援するために、別の関数を定義しようとしましたが、私はそれがブロックから行くために知っているので、わからないんだけど

public static int minIndex (int [][] array , int row, int col) {      
    int min= array[row][col];               
    for (int i = row; i <array.length; i++)  {          
     for (int j = col; j < array[0].length; j++) {         
      if (array[row][col]<min){             
       min=array[row][col];             
      }                   
     }                    
    }                     
    return min;                   
}  
+0

ここで、ブロックのコードですか?私たちはあなたの宿題をするつもりはありません... –

+0

あなたは[この質問]の著者と同じ学校にいますか(https://stackoverflow.com/questions/47563710/java-2d-array-swap-ブロック内に)? –

+0

@RAZ_Muh_Taz私は行列をブロックとして扱う方法を知らないのですが、私の問題です...私はそれらをどのように並べ替えるのかブロックではなく、関数にsqrtNを入力することによってチェックとスタートを停止する必要があるソート。 –

答えて

0

上記の方法は、以下のアルゴリズムによって達成することができ、それを並べ替え:ブロックが..ここ は、あなたがその無関係を信じるならば、その後、を使用していない、私が作ってみたものです

我々の場合では、一つの長い列に行列
  1. 「フラット」:{11,12,13,14、15,16,17,18 ...
  2. ソート配列お気に入りのアルゴリズムを使用して、I Arrays.sort()
  3. (今ソートされた)平坦化された配列を元の行列にコピーすることをお勧めします。この部分は、平坦化された配列内のアイテムを元の行列に戻す方法を考える必要があるため、ややこしいあなたは2-3の例で遊んで、手動で数式を見つけることができます