アレイは、スパース配列を実装します

  1  パブリック クラスSparseArray {
   2  
  。3      // 疎なアレイに二次元アレイ
  。4      パブリック 静的 ボイドTwoArrayToSparseArray(){
   5は、         // 元の2次元アレイが変換される定義
  6。         INT [] [] = originalArray 新しい新しい INT [11] [11。]と、
   図7          // 二次元アレイにアナログデータが格納されている
  8。          originalArray [3] = 1 [4]。   。9          originalArray [6] = 2 [7] ;
 10          // 二次元アレイの数が疎なアレイを作成するために得られた異なる値を横断します
11          int型 COUNT = 0; // の個別値の数を記録
12である         ためINT [] INTS:originalArray){
 13がある             ためINTのアイテム:INTS){
 14                  IF(項目!= 0 ){
 15                      COUNT ++ ;
 16                  }
 17              }
 18である         }
 19  
20である         // 、疎なアレイフォーマットがNである疎な配列を作成+ 1固定ライン3
 21          @ 元の配列保存された行の最初の列の元の配列格納された値の第3列に格納された元の配列の2列目には異なる番号
 22の         // 元の配列の最初の行を格納するための疎な配列行と列との異なる値の数
 23の         // 残りのN行は、異なる値に対する格納された値の行ごとに異なる値と異なる行の数に依存
24          のint [] [] = SparseArray 新しい新しい INT [カウント+ 1] [3];
 25  
26である         。// ランクの数と疎な配列の最初の行に元の配列の異なる値を割り当て
27          SparseArray [0] [0] = originalArray.length;
 28          SparseArray [0] [1] = originalArray [0 ]。長さ;
 29          SparseArray [0] [2] = COUNT;
 30  
31である         // ラインにより、データ線を保持疎アレイはインデックスにインクリメントされ、第2行目から始まるので、最初の行が追加された
32          のint = 1指数;
 33は 
34であり         、// 元の配列を反復しますデータストア
35は、         のためにint型 I = 0;私は<originalArray.length; Iは++ ){
 36              のためにINT J = 0; J <originalArray.length; J ++ ){
37                  IF(originalArray [I]、[J]!= 0 ){
 38である                     // 疎な配列の最初の列に異なる値の割り当てを見つけることは、元の行の第2列のアレイであるアレイの元の列れる
 39                      // 3番目の列は、元の配列と異なっています値は索引付けされた増分である
40                      [0] = SparseArray [インデックス] Iは、
 41である                      SparseArray [インデックス] [1] = J;
 42は                      SparseArray [インデックス] [2] = originalArray [I]、[J];
 43である                      、インデックス++ ;
 44れます                 }
 45              }
 46である         }
 47  
48          のSystem.out.println( "プリントは2次元配列から疎な配列変換を完了" );
 49          //疎なアレイプリント
50の         ためのINT I = 0; I <sparseArray.length; I ++は){
 51で              のSystem.out.println(SparseArray [I] [0] + "\ T" + SparseArray [I] +「\ [1] T "+ SparseArray [I] [2] +" \ T " );
 52である         }
 53である     }
 54は、 
55      // 疎なアレイは、2次元アレイ変換
56は     パブリック 静的 ボイドSparseArrayToTwoArray(){
 される57          // 疎なアレイの作成
58        のint []を[ ] = SparseArray 新しい新しい INT [3] [3。];
 59の       // アナログデータ
60         SparseArray [0] [0] = 11 ;
61は          SparseArray [0] [1] = 11 ;
 62は          SparseArray [0] [2] = 2 ;
 63は          SparseArray [0] = 3 [1]。;
 64          SparseArray [1] = 4 [1] ;
 65          [1] SparseArray [ 2] = 1 ;
 66          SparseArray [2] [0] = 6 ;
 67          SparseArray [2] [1] = 7。。;
 68          SparseArray [2] [2] = 2 ;
 69  
70          // 二次元アレイの作成
 71          // 最初の行と列の得られた二次元アレイ
72          のint行= SparseArray [0] [0 ];
 73は、         INTカラムSparseArray = [0] [1。];
 74          INT [] [] = originalArray 新しい新しい INT [行] [列];
 75  
76    //は最初の列に格納された疎なアレイは、二次元アレイトラバーサル値の異なるランクの数であるため、二次元アレイの割り当てに疎な配列を反復します1から始まり
77          のためにint型 Iは++; I <= sparseArray.length-1 I = 1 ){
 78              // 列値として第2行第3列の各行の最初の列行によれば、カラム、二次元配列に値を割り当てる
79               行= SparseArray [I] [0 ];
 80              カラムSparseArray = [I] [1 ];
 81              originalArray [行] [列] = SparseArray [I] [2 ];
 82          }
 83  
84          / / プリント二次元アレイ
85         System.out.println( "二次元アレイからの印刷完了スパースアレイ変換" );
 86          INT [] INTS:originalArray){
 87              INTのアイテム:INTS){
 88                  System.out.print(アイテムの+「\ T " );
 89              }
 90              のSystem.out.println();
 91である         }
 92      }
 93  
94  
95  
96      公共 静的 ボイドメイン(文字列[]引数){
 97  
98          // 疎なアレイに二次元アレイ
99          TwoArrayToSparseArray();
 100  
101         // 二次元アレイ変換スパースアレイ
102          SparseArrayToTwoArrayを();
 103      }
 104  
105  
106  
107 }

 

おすすめ

転載: www.cnblogs.com/java888/p/11666708.html