Java编程内功之怎么用稀疏数组
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"Java编程内功之怎么用稀疏数组",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java编程内功之怎么用稀疏数组"吧!基本介绍当一个
千家信息网最后更新 2025年01月18日Java编程内功之怎么用稀疏数组
这篇文章主要讲解了"Java编程内功之怎么用稀疏数组",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java编程内功之怎么用稀疏数组"吧!
基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组.
稀疏数组的处理方法是:
记录数组一共有几行几列,有多少个不同的值.
把具有不同值的元素的行列记录在一个小规模的数组中,从而缩小程序的规模.
举例说明
原始的二维数组
原始的二维数组
转换后的二维数组
第一行记录原始数组有多少行列,多少值(8<<代表原始数组的值的个数22,15,11,17,-6,39,91,28>>)
转换后的二维数组
二维数组转稀疏数组思路
鸿蒙官方战略合作共建--HarmonyOS技术社区
遍历原始的二维数组,得到有效数据的个数sum
根据sum就可以创建稀疏数组sparseArr int(sum+1)(3)
将二维数组的有效数据存入到稀疏数组
稀疏数组转原始二维数组思路
鸿蒙官方战略合作共建--HarmonyOS技术社区
先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
再读取稀疏数组后几行的数据,并赋给原始的二维数组即可.
应用实例
鸿蒙官方战略合作共建--HarmonyOS技术社区
使用稀疏数组,来保留类似前面的二维数组(棋盘\地图)等
把稀疏数组存盘,并且可重新恢复原来的二维数组数
代码案例
package com.structures.sparsearray; 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("原始的二维数组"); for (int[] ints : chessArr1) { for (int anInt : ints) { System.out.printf("%d\t", anInt); } System.out.println(); } //将二维数组转稀疏数组 //1.先遍历二维数组,得到非0数据的个数. int sum = 0; for (int[] ints : chessArr1) { for (int anInt : ints) { if (anInt != 0) { sum++; } } } System.out.println("sum = " + sum); //2.创建对应的稀疏数组 int[][] sparseArr = new int[sum + 1][3]; //给稀疏数组赋值 sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum; //遍历原始数组,将非0的值存放到稀疏数组中 int count = 0;//count用于记录第几个非0数据 for (int i = 0; i < chessArr1.length; i++) { for (int j = 0; j < chessArr1[i].length; j++) { if (chessArr1[i][j] != 0) { count++; sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArr1[i][j]; } } } //输出稀疏数组 System.out.println(); System.out.println("得到的稀疏数组为~~~~"); for (int[] ints : sparseArr) { for (int anInt : ints) { if (anInt != 0) { System.out.printf("%d\t", anInt); } } System.out.println(); } //将稀疏数组恢复成原始数组 int[][] chessArr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; for (int i = 0; i < sparseArr[0][2]; i++) { chessArr2[sparseArr[i + 1][0]][sparseArr[i + 1][1]] = sparseArr[i + 1][2]; } //恢复后的原始数组 System.out.println("恢复后的原始数组"); for (int[] ints : chessArr2) { for (int anInt : ints) { System.out.printf("%d\t", anInt); } System.out.println(); } } } /* 原始的二维数组 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sum = 2 得到的稀疏数组为~~~~ 11 11 2 1 2 1 2 3 2 恢复后的原始数组 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 */
感谢各位的阅读,以上就是"Java编程内功之怎么用稀疏数组"的内容了,经过本文的学习后,相信大家对Java编程内功之怎么用稀疏数组这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
数组
稀疏
二维
原始
数据
内功
编程
一行
官方
思路
战略
技术
社区
鸿蒙
合作
学习
不同
有效
个数
元素
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库中的宿舍容量怎么表示
网络安全毛云贵
服务器内部跳转方法
网络安全与法执
威寻网络技术有限公司电话
大唐网络安全组织
数据库管理系统两层映像功能
摩尔庄园服务器
魔兽 服务器数据
江苏网络技术咨询商家
珠海安卓软件开发价格
ygo简中服务器端口
阳泉网络技术质量
数据库 表索引
ro250 数据库
服务器维护管理题库及答案
软件开发工程师就业准备
央企海外机构网络安全合规合法
常见的数据库设计方法有
河北省通信管理局网络安全中心
临沂微信小程序软件开发哪家好
图书馆数据库使用申请模板
掌阅科技数字化图书互联网
中国台湾开源软件开发设计
赛门铁克网络安全服务业务
为什么数据库要分为概念模型
什么软件可以下载数据库文件
服务器系统加固
沈逸 网络安全小组
防止网络技术滥用