データ構造とスパース配列の2次元配列に変換

二次元アレイ1

実際には、あまりにも多くはないマトリックスにおける高次元データの数は、説明

2.スパース配列

2次元配列はほとんど値が0である、または同じである場合、我々はメモリを減らすために使用されるスパース配列を考慮することができます

治療スパース配列:

1)元の配列の三の二次元アレイは、いくつかの奇数行、どのように多くの異なる値を記録しました

2)ここで、行の要素と疎なアレイ内の異なるレコードの列の値、それによって小型化

3.次の例:

 

4.以下のスパースアレイおよび二次元アレイの間の変換であります

パッケージcom.ebiz.array; 

/ ** 
 * @author YHJ 
 * @Create 2019年7月13日16:46 
 * <P> 
 *疎アレイ
 * / 
パブリック クラスSparseArray { 

    公共 静的 ボイドメイン(文字列[]引数){
         / / 11 * 11の作成元の2次元アレイは、黒点を表すアルビノ表す
        INTを [] [] = chessArray1 新しい新しい INT [11] [11 ]; 

        // 黒点の第2行の最初の列 
        chessArray1 [1] [2] = 1 ;
         // 第2行第3列はアルビノを有する 
        chessArray1 [2] = 2 [3] ; 

       / * のSystem.out.println( "元の2次元アレイ")。
        {(chessArray1 []行INT)のために
            {(ロウI INT)のために
                、System.out.printf( "%D \ T"、I)
                ; //System.out.print(i+"\tを「)
            } 
            System.out.println(); 
        } * / 

        // 二次元アレイ疎な配列に変わります
         @ 非ゼロ値の元の配列番号を与える1 
        のint SUM = 0 ;
         のためint型 I = 0;私は<11 ; I ++ ){
             ためINT J = 0; J <11; J ++ ){
                 IF(chessArray1 [I] [J]!= 0 ){ 
                    SUM ++ 
                    System.out.println(); 
                }
            } 
        } 
        // するSystem.out.println( "SUM =" SUM +);
         // 2.疎なアレイ作成
        のint [] [] = SparseArray 新しい新しい INT [SUMの+ 1] [3 ];
         // 3.疎なアレイの割り当て
         // 3.1 0ライン 
        SparseArray [0] [0] = 11 ; 
        SparseArray [ 0] = 11 [1]。; 
        SparseArray [ 0] [2] = SUM; 

        // 3.2元の配列を横断は、疎な非ヌル値を支払われます配列
        int型の COUNT = 0;   // カウンタの定義、行の数を変更
        するためのint型 I = 0;私は<11; Iは++ ){
             INT Iは:行){J = 0; J <11; J ++ ){
                 IF(chessArray1 [I] [J]!= 0 ){ 
                    COUNT ++ ; 
                    SparseArray [COUNT] [ 0] = I; 
                    SparseArray [COUNT] [ 1] = J; 
                    SparseArray [COUNT] [ 2] = chessArray1 [I]、[J]; 

                } 
            } 
        } 
        // 出力疎なアレイ 
        のSystem.out.println( "ワードカウントの配列である:" );
         のためのINT []行:SparseArray){
             ためINT 
                System.out.printf("%D \ T" 、I); 
            } 
            のSystem.out.println(); 
        } 

        のSystem.out.println(「----------------------- ------------------------------------- " ); 
        System.out.printlnは( "疎な配列の回復" ); 

        // 作成疎な配列に応じて対応する配列
        のint [] [] = Chary 新しい新しい INT [SparseArray [0] [0] [SparseArray [0] [1 ]]; 

        // 疎なアレイを繰り返し、Charyを支払った
        ためINT I = 1; I <sparseArray.length; I ++ ){ 
            Chary [SparseArray [I] [ 0] [SparseArray [I] [1]] = SparseArray [I] [2 ]; 
        }

        のための// 输出配列
        INT []行:chary){
             ためint型I:行){ 
                System.out.printf( "%Dの\ tの" 、i)を、
                // System.out.print(私は"\ tを" +); 
            } 
            のSystem.out.println(); 
        } 


    } 
}

 

おすすめ

転載: www.cnblogs.com/jiushixihuandaqingtian/p/11203898.html