一、稀疏数组的实际应用和代码实现
稀疏数组
1.实际需求
使用二维数组记录棋盘
2.分析问题
因为二维数组中的很多值都是默认值0,因此记录了很多没有意义的数据,由此我们引出稀疏数组
3.稀疏数组的基本介绍
(1)当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
(2)稀疏数组的处理方法是:
记录数组一共有几行几列,有多少个不同的值
把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
4.稀疏数组举例说明
5.二维数组转换成稀疏数组的思路
1.遍历整个二维数组得到有效数据的个数为sum
2.根据sum就可以创建稀疏数组sparseArray[sum+1][3]
3.将二维数组的有效数据存入到稀疏数组中
6.稀疏数组转换为原始数组的思路
1.先读取稀疏数组的第一行,创建一个原始数组
2.再读取稀疏数组的后几行,并赋值给原始的二维数组
7.代码实现
package cn.zzw.algorithm.sparsearray;public class SparseArray {public static void main(String[] args) {//创建一个原始的二维数组int chessArray[][]=new int[11][11];//默认0表示没有棋子,1表示黑子,2表示篮子chessArray[1][2]=1;chessArray[2][3]=2;chessArray[4][5]=2;//输出原始的二维数组System.out.println("原始的二维数组为:");//使用增强for循环遍历数组for(int row[]:chessArray){for(int data:row){System.out.printf("%d\t",data);}System.out.println();}//将二维数组转换为稀疏数组//遍历二维数组,得到非零数据的个数int sum=0;for (int i = 0; i < chessArray.length; i++) {for(int j=0;j< chessArray[i].length;j++){if(chessArray[i][j]!=0){sum++;}}}//创建对应的稀疏数组int sparseArray[][]=new int[sum+1][3];//给稀疏数组赋值sparseArray[0][0]=chessArray.length;sparseArray[0][1]=chessArray[0].length;sparseArray[0][2]=sum;//遍历二维数组,将非零的值存放在sparseArray中int count=0;for (int i = 0; i < chessArray.length; i++) {for(int j=0;j< chessArray[i].length;j++){if(chessArray[i][j]!=0){count++;sparseArray[count][0]=i;sparseArray[count][1]=j;sparseArray[count][2]=chessArray[i][j];}}}//输出稀疏数组的形式System.out.println("得到的稀疏数组为:");for (int i = 0; i < sparseArray.length; i++) {System.out.printf("%d\t%d\t%d\t\n",sparseArray[i][0],sparseArray[i][1],sparseArray[i][2]);}System.out.println();//将稀疏数组转换为原始的二维数组//读取稀疏数组的第一行,根据第一行的数据创建原始的二维数组int chessArray2[][]=new int[sparseArray[0][0]][sparseArray[0][1]];//从第二行开始,将稀疏数组的值赋给原始的二维数组即可for (int i = 1; i < sparseArray.length; i++) {chessArray2[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];}//输出恢复后的二维数组for(int row[]:chessArray){for(int data:row){System.out.printf("%d\t",data);}System.out.println();}}
}
一、稀疏数组的实际应用和代码实现相关推荐
- golang数据结构与算法——稀疏数组、队列和链表
文章目录 一 稀疏数组 1.1 先看一个实际的需求 1.2 稀疏数组基本介绍 1.3 稀疏数组举例说明 1.4 把数组转换为稀疏数组实现 1.5 把稀疏数组还原为原数组 二 队列 2.1 队列的介绍 ...
- 数据结构与算法 - 稀疏数组(理解+代码实现案例)
举例 稀疏数组第一行是原数据几行几列和几个有效数据的个数 下面的行是各个有效数组的行列与具体值 稀疏数组实现 代码实现 package DataStructures.sparsearray;/*** ...
- 数据结构与算法---稀疏数组
数据结构与算法-稀疏数组 1.基本介绍: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 2.稀疏数组的处理方法是: (1)记录数组一共有几行几列,有多少个 ...
- 数据结构之稀疏数组 - SparseArray
关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 1,定义 稀疏数组可以看作普通二维数组的压缩,这里的普通数组指无效数据远大于有效数据 稀疏数组分为3列 行 列 ...
- (数据结构与算法)稀疏数组案例
案例: 将如下五子棋盘用稀疏数组保存,并有存盘退出和续上盘功能(文件输入输出) 实现思路 代码实现 import java.io.*;public class Demo01SparseArray {p ...
- (JAVA学习笔记) 关于稀疏数组
稀疏数组介绍 当一个数组中大部分的元素为0,或者同一值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方式是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记 ...
- 数据结构和算法之稀疏数组
一.什么是稀疏数组呢? 定义一个11*11的二维数组int[ ][ ] cherryArr=new int[11][11] 其中 cherryArr1[1][2]=1; cherryArr1[2][3 ...
- 数据结构(一)--稀疏数组
数据结构复习笔记(一)–稀疏数组 介绍 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 如: 0 0 0 0 0 0 0 0 0 0 0 0 ...
- 稀疏数组与原始数组之间的转换
二维数组 转 稀疏数组的思路 1.遍历原始的二维数组,得到有效数据的个数 sum 2.根据sum就可以创建 稀疏数组 sparseArr int[sum + 1][3] 3.将 ...
最新文章
- 解决THINKPHP 支付宝接口异步notify 无效可能的问题。
- 论文浅尝 | 重新审视语言模型与知识库的关系
- http response 返回 没有内容_HTTP 教程2
- “智慧城市”建设以前是传说,现在能体验
- Ansible 起步指南
- keras指定gpu_keras实现多GPU或指定GPU的使用介绍
- unity Mesh Renderer的一点想法
- SQL Server 2012安装过程中出现 NetFx3错误
- KELL代码加速度传感器计算角度
- 使用Setup Factory把java应用打包成安装软件并更改默认安装路径
- python列表解析的底层详解
- python制作彩色字符画
- es远程主机强迫关闭了一个现有的连接
- 为什么使用服务器端渲染 (SSR)?
- 从提示框:适用于Windows的iPad接口仿真,Easy Access iPhone手电筒和Kindle收藏管理...
- 微信圈子|微卡技术栈
- JS中children与childNodes的区别
- sws_scale概念讲解
- 虹膜识别论文5:DeepIrisNet2 2019年 学习心得
- 电脑换IP后,改虚拟机里的IP
热门文章
- React 项目--设置根目录(8)
- list存储引用类型注意的问题
- RGB+Depth规则箱体测量方案
- threejs画面拖动事件判断
- 完美解决:You are using pip version 9.0.1, however version 18.0 is available.
- 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...
- 生信分析流程构建的几大流派
- mSystems:南京土壤所禇海燕组受邀发表微生物生物地理学综述(官方配视频简介)
- Nature子刊:厌氧消化链球菌促进结直肠癌发生及调节肿瘤免疫
- SCI-HUB客户端(文献神器V6.0)——下载文献如此简单