Java学习——数据结构——稀疏数组与二维数组的互相转换
2020-04-20 12:57
302 查看
学习尚硅谷韩顺平老师的Java数据结构笔记,详情请移步网址
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
应用实例
- 使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)
- 把稀疏数组存盘,并且可以从新恢复原来的二维数组数
- 整体思路分析
代码:
package com.JavaStudy; 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; //输出原始的二维数组 System.out.println("原始的二维数组:"); output(chessArr1); //将二维数组转稀疏数组 //1、先遍历二维数组得到非零数据的个数 int sum = 0; for (int[] row: chessArr1) { for (int data: row) { if (data != 0) { sum++; } } } //2.创建对应的稀疏数组 int[][] sparseArr = new int[sum+1][3]; //给稀疏数组赋值 sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum; //遍历二维数组,将非零的值存放到sparseArr中 int count = 0;//用于记录是第几个非零数据 for (int i = 0; i <11 ; i++) { for (int j = 0; j <11 ; j++) { if (chessArr1[i][j] != 0) { count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArr1[i][j]; } } } //输出稀疏数组 System.out.println("\n稀疏数组为:"); output(sparseArr); //将稀疏数组恢复成原始二维数组 /** * 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组 * 在读取稀疏数组后几行的数据,并赋给 原始的二维数组 */ int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; for (int i = 1; i <sparseArr.length; i++) { chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; } //输出还原后的二维数组 System.out.println("\n处理后数组为:"); output(chessArr2); } //输出函数 public static void output(int[][] chessArr1) { for (int[] row : chessArr1) { for (int data : row) { System.out.printf("%d\t", data); } System.out.println(); } } }
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Java稀疏数组和二维数组的转换--数据结构的学习
- JAVA描述算法和数据结构(01):稀疏数组和二维数组转换
- Java菜鸟学习笔记--数组篇(三):二维数组
- 数据结构Java实现——④数组——>稀疏矩阵三元组顺序存储
- 二维数组和稀疏数组的相互转换
- java基础学习记录之利用数组查表法进行进制转换的学习与练习六
- Java学习_数组1_二维数组内存图解
- java数组与List互相转换
- Java 字节数组与十六进制表示的字符串,互相转换
- 如鹏java学习进程 String数组转换Int数组
- java数组学习:使用二维数组输出杨辉三角
- Java数据结构-001数组-稀疏数组
- java学习之旅66--常用类_DateFormat和SimpleDateFormat_时间和字符串的互相转换
- Java 语言中集合,对象数组,原始类型(primitive)数组互相转换的工具类
- 用Java转换n行m列的二维数组转换为m行n列的数组输出
- Java中byte数组和16进制字符串互相转换
- java学习初探八之数组一维数组、二维数组
- Java中字符串和byte数组互相转换
- 图解和代码实现稀疏数组&二维数组相互转换
- 二维数组和稀疏数组的转换及文件读取