二維數組轉爲稀疏數組再復原

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

package com.qcby.bilbil;

/**
 * @author HuangHaiyang
 * @date 2020/07/01
 * @description: description
 * @version: 1.0.0
 */
public class SparseArray {

    public static void main(String[] args) {
        //原始數組
        int[][] originalArray=new int [11][11];
        originalArray[1][2]=1;
        originalArray[2][3]=2;
        System.out.println("原始數組爲:");
        int sum=0;//通過sum的大小確定稀疏數組的大小
        for (int i = 0; i < originalArray.length; i++) {
            for (int j = 0; j < originalArray.length; j++) {
                System.out.print(" "+originalArray[i][j]+" ");
                if (originalArray[i][j]!=0){
                    sum++;
                }
            }
            System.out.println();
        }
        int[][] sparseArray=new int[sum+1][3];
        sparseArray[0][0]=originalArray.length;//記錄原始數組的行數
        sparseArray[0][1]=originalArray[0].length;//記錄原始數組的列數
        sparseArray[0][2]=sum;//記錄不爲0的數的個數
        int count=0;
        for (int i = 0; i < originalArray.length; i++) {
            for (int j = 0; j < originalArray.length; j++) {
                if (originalArray[i][j]!=0){
                    count++;
                    sparseArray[count][0]=i;
                    sparseArray[count][1]=j;
                    sparseArray[count][2]=originalArray[i][j];
                }
            }
        }
        System.out.println("稀疏數組爲");
        for (int i = 0; i < sparseArray.length; i++) {
            for (int j = 0; j <sparseArray[0].length ; j++) {
                System.out.print(" "+sparseArray[i][j]+" ");
            }
            System.out.println();
        }

        int[][] restoreArray=new int[sparseArray[0][0]][sparseArray[0][1]];
        for (int i = 1; i < sparseArray.length; i++) {
            restoreArray[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
        }
        System.out.println("根據稀疏數組復原的數組");
        for (int i = 0; i < restoreArray.length; i++) {
            for (int j = 0; j <restoreArray.length ; j++) {
                System.out.print(" "+restoreArray[i][j]+" ");
            }
            System.out.println();
        }
    }
}


原始數組爲:
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  1  0  0  0  0  0  0  0  0 
 0  0  0  2  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
稀疏數組爲
 11  11  2 
 1  2  1 
 2  3  2 
根據稀疏數組復原的數組
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  1  0  0  0  0  0  0  0  0 
 0  0  0  2  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 

Process finished with exit code 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章