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