数据结构(一)---稀疏矩阵
2020-03-25 08:06
302 查看
数据结构(一)---稀疏矩阵
public class SparseArray { public static void main(String[] args) { //创建一个二维数组11*11 //0代表没有棋子,1表示黑子,2表示蓝子 int chessArray01[][]=new int[11][11]; chessArray01[1][2]=1; chessArray01[2][3]=2; chessArray01[3][3]=2; //输出原始的二维数组 for (int[] row : chessArray01) { for (int data : row) { System.out.printf("%d\t",data); } System.out.println(); } /**把二维数组转成稀疏数组 * @Date: 2019/10/29 0:08 */ //1-先遍历二维数组,得到非0数据的个数 int sum=0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (chessArray01[i][j]!=0){ sum++;//统计二维数组中值不为0的个数 } } } System.out.println("数组中不为0的值个数sum="+sum); //2-创建对应的稀疏数组 //了解稀疏矩阵之后,就知道固定为3列,行数为sum+1,因为第一行是参数栏,初始化稀疏矩阵如下 int sparseArray[][]=new int[sum+1][3]; sparseArray[0][0]=11; sparseArray[0][1]=11; sparseArray[0][2]=sum; //遍历二维数组里不为0的值,再把这个值放进稀疏数组 int count=0; for (int i = 0; i < 11; i++) { for (int j = 0; j < 11; j++) { if (chessArray01[i][j]!=0){ //第一个非0值,放在第二行,索引为1 //第二个非0值,放在第三行,索引为2 //第三个非0值,放在第四行,索引为3 //第count个非0值,放在第count+1行,索引为count //所以需要一个计数器,记录到第几个非0值了 count++; sparseArray[count][0]=i; sparseArray[count][1]=j; sparseArray[count][2]=chessArray01[i][j]; } } } //3-输出稀疏矩阵 System.out.println("得到稀疏矩阵,如下:"); for (int[] row : sparseArray) { for (int data : row) { System.out.printf("%d\t",data); } System.out.println(); } //总结 //首先,你要了解稀疏矩阵的结构,才能只能怎么把遍历出来的数据放进稀疏矩阵 /**把稀疏数组转换成原始的二维数组 * 1-先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组(第一行包含了二位数组的基本信息) * 2-在读取稀疏矩阵数组后几行的数据,并赋给二维数组 * * @Date: 2019/10/28 23:42 */ //1-先知道二维数组一共有几行几列 int rowSum=sparseArray[0][0];//二维数组的行数 int lieSum=sparseArray[0][1];//二维数组的列数 int numSum=sparseArray[0][2];//二维数组一共有几个值不为0 //创建二维数组(已知行数和列数) int chessArray02[][]=new int[rowSum][lieSum]; //2-遍历稀疏数组里的值,然后放到二维数组里 int rowNum=0; int lieNum=0; for (int i = 1; i < numSum+1; i++) { rowNum=sparseArray[i][0];//稀疏数组值在二维数组里的行数 lieNum=sparseArray[i][1];//稀疏数组值在二维数组里的列数 chessArray02[rowNum][lieNum]=sparseArray[i][2];//稀疏数组值放到二维数组里去 } //3-遍历输出二维数组 System.out.println("根据稀疏矩阵得到的二维数组,如下:"); for (int[] row : chessArray02) { for (int data : row) { System.out.printf("%d\t",data); } System.out.println(); } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- [数据结构实验:稀疏矩阵]
- (数据结构课程设计)稀疏矩阵运算器
- 数据结构实验之数组二:稀疏矩阵
- 数据结构作业稀疏矩阵三元组表示
- 【数据结构】——稀疏矩阵转置
- 数据结构课程设计:稀疏矩阵(加、减、乘、求逆矩阵)
- 看数据结构写代码(21) 稀疏矩阵(十字链表方式)
- 数据结构八:稀疏矩阵(涉及三元组,十字链表)
- 数据结构——稀疏矩阵三元组操作
- 数据结构实验之数组二:稀疏矩阵
- C++ 数据结构之对称矩阵及稀疏矩阵的压缩存储
- 数据结构实验之数组二:稀疏矩阵
- SDUT 3348 数据结构实验之数组二:稀疏矩阵
- 数据结构实验之数组二:稀疏矩阵
- 数据结构之稀疏矩阵
- 数据结构(二):线性表的使用原则以及链表的应用-稀疏矩阵的三元组表示
- 数据结构——数组—稀疏矩阵及运算
- 【数据结构】——稀疏矩阵转置
- sdutacm-数据结构实验之数组二:稀疏矩阵
- 数据结构实验10——稀疏矩阵