int count = 0;//非0的元素个数,即稀疏数组所在行索引 for (int i = 0; i < array1.length; i++) { for (int j = 0; j < array1[i].length; j++) { if (array1[i][j] != 0) { count++;//稀疏数组所在行索引 array2[count][0] = i;//稀疏数组第count行第一列,是原数组非0的元素的所在行索引 array2[count][1] = j;//稀疏数组第count行第二列,是原数组非0的元素的所在列索引 array2[count][2] = array1[i][j];//稀疏数组第count行第三列,是原数组非0的元素值 } } }
printArray(array2);//输出稀疏数组
System.out.println("将稀疏数组还原成正常数组为:");
//定义二维数组,稀疏数组第一行第一列:原数组行数,第一行第二列:原数组列数 int[][] array3 = new int[array2[0][0]][array2[0][1]];//数组初始化后,每个元素都为0 for (int i = 1; i < array2.length; i++) { //从稀疏数组,第二行开始遍历,即 i 为1 array3[array2[i][0]][array2[i][1]] = array2[i][2];//稀疏数组第i行第一列是原数组非0元素的行索引,第i行第二列是原数组非0元素的列索引,第i行第三列的值是原数组的元素值 }
printArray(array3);//输出还原后的数组 }
private static void printArray(int[][] arrays) { for (int[] array : arrays) { for (int num : array) { System.out.print(num + "\t"); } System.out.println(); } }