構造体の配列とアルゴリズムスパースアレイ-1

 

1つのスパースアレイ

使用:配列内の要素のほとんどは、0、または同一の配列の値である場合、疎なアレイは、アレイを保持するために使用することができる
:処理方法スパースアレイ
レコードの配列は、いくつかの奇数行の合計、異なる数値は
、それによって、プログラムのサイズを小さくする2つの異なる値を有する要素及び小のアレイの行に記録された値、
// 、バックギャモンを取り、例えば、11 * 11の元の2次元配列を作成する
         // 0は2アルビノ、1つの黒点、何ポーンがないことを示し
        INT [] [] = chessArr1 新しい新しい INT [ 11 ] [ 11 ]; 
        chessArr1 [ 1 ] [ 2 ] = 1 ; 
        chessArr1 [ 2 ] [ 3 ] = 2 ; 
        chessArr1 [ 3 ] [ 3 ] = 1。; 
        chessArr1 [ 4 ] [ 4 ] = 2 ;
         // 元の2次元配列を取得
        するためにINT[]行:chessArr1){
             ためのint型データ:行){ 
                システム。アウト .printf(" %D \トン" 、データ); 
            } 
            システム。アウト.println(); 
        }

スパース配列に二次元配列

元の2次元アレイを横断する、和を取得し、有効なデータの数を
作成することができる和アレイsparseArr INT [和+ 1] [洗浄することによる 3];
二次元アレイに有効なデータを疎アレイであります

// 疎なアレイに二次元配列
         // 1.横断する二次元アレイの数は、非ゼロのデータを与える
        intを SUM = 0 ;
         のためのINT I = 0 ; I <chessArr1.length; I ++ ){
             INT J = 0 ; J <chessArr1.length; J ++ ){
                 IF(chessArr1 [I] [J] =!0 ){ 
                    SUM ++ ; 
                } 
            } 
        } 
        // 2に対応疎アレイ作成
        INTを [] [] sparseArr = 新しい新しい INT [SUM + 1 ]、[3 ];
         // 疎なアレイの割り当てに 
        sparseArr [ 0 ] [ 0 ] = 11 ; 
        sparseArr [ 0 ] [ 1 ] = 11 ; 
        sparseArr [ 0 ] [ 2 ] = SUM;
         // 2次元アレイを横切る、非ゼロ疎な配列に格納された値
        のint COUNT = 0 ;
         のためのINT I = 0 ; I <chessArr1.length; I ++ ){
             ためINT J = 0 ; J <chessArr1.length; J ++ ){
                IF(!chessArr1 [I] [J] = 0 ){ 
                    COUNT ++ ; 
                    sparseArr [COUNT] [ 0 ] = I; 
                    sparseArr [COUNT] [ 1。 =] J; 
                    sparseArr [COUNT] [ 2 ] = chessArr1 [I] [J]; 
                } 
            } 
        } 
        // 反復の疎なアレイ 
        システム。OUT .println(" 疎配列が得られる:" );
         のためのINT I = 0 ; I <sparseArr.length; I ++ ){
            INT J = 0 ; J < 3 ; J ++ ){ 
                システム。アウト .printf(" %D \ T " 、sparseArr [I] [J])。
            } 
            システム。アウト.println(); 
        }

二次元アレイのまばらなアレイ
疎な配列の最初の行を読み取るために、データの最初の行は、元の二次元アレイchessArr2 = INT [カラム数]の[行]作成
洗浄後、アレイの再リードデータ線そして、元の2次元アレイに割り当てられました

     // 元の2次元アレイにスパースアレイを復元
         // 1は、第1元の2次元アレイを作成するために、最初の行のデータによれば、疎な配列の最初の行を読み取る
        INTを [] [] = chessArr2 新しい新しい INT [sparseArr [ 0 ] [ 0 ] [sparseArr [ 0 ] [ 1 ]];
         // 二次元アレイを作成するために疎なアレイに割り当てられた再リードデータ線後2 
        ためにINT I = 1 ; I <sparseArr.length。 ++ I ){ 
            chessArr2 [sparseArr [I] [ 0 ] [sparseArr [I] [ 1 ] = sparseArr [I] [ 2 ]; 
        } 
        // 2次元アレイを復元出力する 
        。システムOUTの .printlnを("プレス疎なアレイは、二次元アレイから回収された" のためにINT []行:chessArr2){
             ためINT データ:行){ 
                ザシステムOUT .printf(" %D \ T " 、データ); 
            } 
            。[システムOUT 。 println(); 
        }

 ファイルから読み込んだファイルに配列して、

     // スパース配列に2次元配列は、直接A.TXTファイルの読み取り 
        ファイルファイル= 新しい新しいファイル(" A.TXT " ;)
        てFileWriter FW = 新しい新しいてFileWriter(ファイル);
         のためint型は、私は= 0を、I <sparseArr .LENGTH; I ++ ){
             ためINT J = 0 ; J < 3 ; J ++ ){ 
                fw.write(sparseArr [I] [J] + " \ T " ); 
            } 
            fw.write(" \ N- " ); 
        }
        fw.close();
        // ファイルA.TXT二次元アレイは、読み出し 
        システム。OUTの .println(" ファイルから得られたデータ!!! " ); 
        BufferedReaderのBR = 新しい新しい BufferedReaderの(新しい新規 FileReaderの(" A.TXT " )) ;
         INT [] [] chessArr3 = NULL ; 
        文字列ライン; // 
        のint Z = 0 ;
         一方、((= br.readLine線())!= NULL ){ 
            Z ++ ; 
            文字列[] TEMP = line.split(" \トン");
            もし(Z == 1 ){ 
                chessArr3 = 新しい INT [Integer.valueOf(TEMP [ 0 ])] [Integer.valueOf(TEMP [ 1 ])]。
            } 
            場合(Zは> 1 ){
                 ためには、INTは私= 0 ; I <temp.length; I ++ ){ 
                    chessArr3 [Integer.valueOf(TEMP [ 0 ])] [Integer.valueOf(TEMP [ 1 ])] =整数。 valueOf(TEMP [ 2 ])。
                } 
            } 
        }
        INT {:chessArr3 []行)
             のためのint型データ:行){ 
                システム。アウト .printf(" %D \トン" 、データ); 
            } 
            システム。アウト .println(); 
        } 
 }

おすすめ

転載: www.cnblogs.com/bai3535/p/12088702.html