//稀疏数组 public class ArrayDemo07 { public static void main(String[] args) { int[][] array1=new int[11][11];//11行11列的棋盘,1代表白棋,2代表黑棋 array1[1][2]=1; array1[2][3]=2; for (int[] ints:array1) { for(int anInts:ints){ System.out.print(anInts+"\t"); } System.out.println(); } System.out.println("=============================="); //转换为稀疏数组保存 int sum=0; for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if (array1[i][j]!=0) sum++; } } System.out.println("有效个数为:"+sum); //创建一个稀疏数组 int[][] array2=new int[sum+1][3]; array2[0][0]= array1.length; array2[0][1]= array1[0].length; array2[0][2]= sum; int count=0; //遍历二维数组,将非零值存入稀疏数组 for (int i = 0; i <array1.length ; i++) { for (int j = 0; j < array1[0].length; j++) { if (array1[i][j]!=0){ count++; array2[count][0]=i; array2[count][1]=j; array2[count][2]=array1[i][j]; } } } //输出稀疏数组 for (int i = 0; i < array2.length; i++) { for (int j = 0; j < array2[i].length; j++) { System.out.print(array2[i][j]+"\t"); } System.out.println(); } /*稀疏数组 第0行第0列表示原始数组的行数 第0行第1列表示原始数组的列数 第0行第2列表示原始数组中有效个数 第1行第0列表示第一个有效数字在原始数组中第几行 第1行第1列表示第一个有效数字在原始数组中第几列 第1行第2列表示第一个有效数字是 */ System.out.println("=============================="); System.out.println("还原"); //还原稀疏数组 //1.读取稀释数组 int[][] array3=new int[array2[0][0]][array2[0][1]]; //2.给其中的元素还原它的值 for (int i = 1; i <array2.length ; i++) { array3[array2[i][0]][array2[i][1]]=array2[i][2]; } //3.打印 for (int[] ints:array3){ for (int onInts:ints){ System.out.print(onInts+"\t"); } System.out.println(); } } }
稀疏数组以及还原
最新推荐文章于 2022-07-13 16:05:59 发布