稀疏数组学习记录
2019-06-16 23:11
127 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Carry_bluebuff/article/details/92439516
package com.atguigu.sparsearray; /** * @author wststart * @create 2019-06-14 21:27 */ public class SparseArray { public static void main(String[] args) { // 创建一个原始的二维数组 11 * 11 // 0:表示没有棋子,1 表示黑子 2表示白子 int chessArr1[][] = new int[11][11]; chessArr1[1][2] = 1; chessArr1[2][3] = 2; chessArr1[4][5] = 2; // 输出原始的二维数组 for (int[] ints : chessArr1) { for (int i : ints) { System.out.printf("%d\t", i); } System.out.println(); } // 将二维数组 转成稀疏数组 // 1.先遍历二维数组 得到非0数据的个数 int sum = 0;//用来计入非0数据的个数 for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1[i].length; j++) { if (chessArr1[i][j] != 0) { sum++; } } } // 2.创建对应的稀疏数组 int sparseArr[][] = new int[sum + 1][3]; sparseArr[0][0] = chessArr1.length; sparseArr[0][1] = chessArr1[0].length; sparseArr[0][2] = sum; // 遍历二维数组,将非9数据存放到稀疏数组中 int count = 0;//用于记录是第几个非0数据 for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1[i].length; j++) { if (chessArr1[i][j] != 0) { sparseArr[++count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArr1[i][j]; } } } // 输出稀疏数组 for (int i = 0; i < sparseArr.length; i++) { System.out.printf("%d\t%d\t%d\t\n", sparseArr[i][0], sparseArr[i][1], sparseArr[i][2]); } System.out.println(); //将稀疏数组 --》 恢复成 原始的二维数组 /* * 1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的 chessArr2 = int [11][11] 2. 在读取稀疏数组后几行的数据,并赋给 原始的二维数组 即可. */ //1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组 int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]]; //2. 在读取稀疏数组后几行的数据(从第二行开始),并赋给 原始的二维数组 即可 for (int i = 1; i < sparseArr.length; i++) { chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; } // 输出恢复后的二维数组 System.out.println(); System.out.println("恢复后的二维数组"); for (int[] row : chessArr2) { for (int data : row) { System.out.printf("%d\t", data); } System.out.println(); } } }
相关文章推荐
- discuz学习记录:在模板文件中循环显示数组中的值
- 【学习记录】5.二维数组以及数组练习挑战
- 学习记录点滴-C++引用 指针 string 容器 数组
- 算法学习记录七(C++)--->二分法找有序旋转数组最小值
- java基础学习记录之数组最值的学习与练习一
- java学习记录——数组查找(在数组中查找并输出你所需要的数据)
- 学习ThinkPHP3.2.2:video8,以数组方式显示插入的记录
- 数据结构学习记录(一)--------数组的地层实现代码(数据的add、delete、查、改)
- 黑马程序员_学习记录04:数组
- C数组学习记录
- 20100706 学习记录:截取字符串最后一个字符 && asp textarea 多行数组分割处理
- 201008 学习记录:数组声明
- java基础学习记录之数组选择排序的学习与练习二
- swift 学习记录(集合---数组)
- java学习记录(三)Java包与对象数组的学习总结
- C++学习记录(20180302)(2个实例+数组学习)
- 一步一步学习java数组学习(ch5)数3退1记录最后留下来的在队列中的位置
- 算法学习记录十一(C++)--->调整数组顺序使奇数前偶数后
- 一步一步学习java数组学习(ch5)数3退1记录最后留下来的在队列中的位置
- java基础学习记录之数组冒泡排序的学习与练习三