稀疏数组

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();}}
}

一、稀疏数组的实际应用和代码实现相关推荐

  1. golang数据结构与算法——稀疏数组、队列和链表

    文章目录 一 稀疏数组 1.1 先看一个实际的需求 1.2 稀疏数组基本介绍 1.3 稀疏数组举例说明 1.4 把数组转换为稀疏数组实现 1.5 把稀疏数组还原为原数组 二 队列 2.1 队列的介绍 ...

  2. 数据结构与算法 - 稀疏数组(理解+代码实现案例)

    举例 稀疏数组第一行是原数据几行几列和几个有效数据的个数 下面的行是各个有效数组的行列与具体值 稀疏数组实现 代码实现 package DataStructures.sparsearray;/*** ...

  3. 数据结构与算法---稀疏数组

    数据结构与算法-稀疏数组 1.基本介绍: ​ 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 2.稀疏数组的处理方法是: ​ (1)记录数组一共有几行几列,有多少个 ...

  4. 数据结构之稀疏数组 - SparseArray

    关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 1,定义 稀疏数组可以看作普通二维数组的压缩,这里的普通数组指无效数据远大于有效数据 稀疏数组分为3列 行 列 ...

  5. (数据结构与算法)稀疏数组案例

    案例: 将如下五子棋盘用稀疏数组保存,并有存盘退出和续上盘功能(文件输入输出) 实现思路 代码实现 import java.io.*;public class Demo01SparseArray {p ...

  6. (JAVA学习笔记) 关于稀疏数组

    稀疏数组介绍 当一个数组中大部分的元素为0,或者同一值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方式是: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同值的元素的行列及值记 ...

  7. 数据结构和算法之稀疏数组

    一.什么是稀疏数组呢? 定义一个11*11的二维数组int[ ][ ] cherryArr=new int[11][11] 其中 cherryArr1[1][2]=1; cherryArr1[2][3 ...

  8. 数据结构(一)--稀疏数组

    数据结构复习笔记(一)–稀疏数组 介绍 在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵. 如: 0 0 0 0 0 0 0 0 0 0 0 0 ...

  9. 稀疏数组与原始数组之间的转换

    二维数组 转 稀疏数组的思路     1.遍历原始的二维数组,得到有效数据的个数 sum     2.根据sum就可以创建 稀疏数组 sparseArr int[sum + 1][3]     3.将 ...

最新文章

  1. 解决THINKPHP 支付宝接口异步notify 无效可能的问题。
  2. 论文浅尝 | 重新审视语言模型与知识库的关系
  3. http response 返回 没有内容_HTTP 教程2
  4. “智慧城市”建设以前是传说,现在能体验
  5. Ansible 起步指南
  6. keras指定gpu_keras实现多GPU或指定GPU的使用介绍
  7. unity Mesh Renderer的一点想法
  8. SQL Server 2012安装过程中出现 NetFx3错误
  9. KELL代码加速度传感器计算角度
  10. 使用Setup Factory把java应用打包成安装软件并更改默认安装路径
  11. python列表解析的底层详解
  12. python制作彩色字符画
  13. es远程主机强迫关闭了一个现有的连接
  14. 为什么使用服务器端渲染 (SSR)?
  15. 从提示框:适用于Windows的iPad接口仿真,Easy Access iPhone手电筒和Kindle收藏管理...
  16. 微信圈子|微卡技术栈
  17. JS中children与childNodes的区别
  18. sws_scale概念讲解
  19. 虹膜识别论文5:DeepIrisNet2 2019年 学习心得
  20. 电脑换IP后,改虚拟机里的IP

热门文章

  1. React 项目--设置根目录(8)
  2. list存储引用类型注意的问题
  3. RGB+Depth规则箱体测量方案
  4. threejs画面拖动事件判断
  5. 完美解决:You are using pip version 9.0.1, however version 18.0 is available.
  6. 怎么知道 网站是否直接明文保存密码_忘记账号密码 浏览器记住了 怎么找回密码?...
  7. 生信分析流程构建的几大流派
  8. mSystems:南京土壤所禇海燕组受邀发表微生物生物地理学综述(官方配视频简介)
  9. Nature子刊:厌氧消化链球菌促进结直肠癌发生及调节肿瘤免疫
  10. SCI-HUB客户端(文献神器V6.0)——下载文献如此简单