java实现稀疏数组压缩
package sparseArray; public class SparseArray { public static void main(String[] args) {
// TODO Auto-generated method stub
//创建一个原始的二维数组
// 0表示没有棋子,1表示黑子,2表示蓝子
int chessArr1[][] =new int[11][11];
chessArr1[1][2]=1;
chessArr1[2][3]=2;
//输出原始二维数组
System.out.println("原始的二维数组:");
for(int [] row:chessArr1)
{
for (int data:row)
{
System.out.printf("%d\t",data);
}
System.out.println();
}
//将二维数组转化成稀疏数组
//先遍历二维数组,获取非零元素的个数
int sum=0;
for(int i=0;i<chessArr1.length;i++)
{
for(int j=0;j<chessArr1[0].length;j++)
{
if(chessArr1[i][j]!=0)
{
sum++;
}
}
}
//创建对应的一个稀疏数组
int sparseArr2[][]=new int[sum+1][3];
//给稀疏数组赋值
sparseArr2[0][0]=11;
sparseArr2[0][1]=11;
sparseArr2[0][2]=sum;
int index=1;//稀疏数组的下标,记录是第几个非零数据
//遍历二维数组,将非零的值,存储到稀疏数组中
for(int i=0;i<chessArr1.length;i++)
{
for(int j=0;j<chessArr1[0].length;j++)
{
if(chessArr1[i][j]!=0)
{
sparseArr2[index][0]=i;
sparseArr2[index][1]=j;
sparseArr2[index][2]=chessArr1[i][j];
index++;
}
}
} //输出稀疏数组的形式
System.out.println("得到的稀疏数组为如下形式:");
for(int i=0;i<sparseArr2.length;i++)
{
System.out.printf("%d\t%d\t%d\t",sparseArr2[i][0],sparseArr2[i][1],sparseArr2[i][2]);
System.out.println();
}
//将稀疏数组回复称原来的二维数组
//先读取稀疏数组的第一行
//赋值给对应数组就好了
int chessArr3[][]=new int[sparseArr2[0][0]][sparseArr2[0][1]];
//循环赋值
for(int i=1;i<sparseArr2.length;i++)
{
chessArr3[sparseArr2[i][0]][sparseArr2[i][1]]=sparseArr2[i][2];
}
//////////////////////////
System.out.println("输出恢复后的二维数组:");
for(int i=0;i<sparseArr2[0][0];i++)
{
for(int j=0;j<sparseArr2[0][1];j++)
{
System.out.printf("%d\t",chessArr3[i][j]);
}
System.out.println();
}
} }
java实现稀疏数组压缩的更多相关文章
- Java的稀疏数组的简单代码实现
目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ...
- java算法--稀疏数组
数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ...
- 图解Java数据结构之稀疏数组
在编程中,算法的重要性不言而喻,没有算法的程序是没有灵魂的.可见算法的重要性. 然而,在学习算法之前我们需要掌握数据结构,数据结构是算法的基础. 我在大学的时候,学校里的数据结构是用C语言教的,因为对 ...
- 数据结构(1):稀疏数组使用java实现
主要是用于数组压缩,去除无效的数组内容: 原数组内容: 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 转换成 稀疏数组 5 5 2 1 1 1 2 ...
- 数据结构与算法之java语言实现(一):稀疏数组
一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...
- Java数据结构之稀疏数组(Sparse Array)
1.需求 编写的五子棋程序中,有存盘退出和续上盘的功能.因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组. 2.基本介绍 当一个数组中大部分元素为0,或者为 ...
- 【学习总结】java数据结构和算法-第三章-稀疏数组和队列
相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二 ...
- Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组
目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...
- Java数据结构和算法(2)之稀疏数组
1.定义 稀疏数组可以看做是普通二位数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组,关于稀疏数组的运用有五子棋盘,地图等.. *当一个数组中大部分元素为0,或者为同一个值的数组时 ...
随机推荐
- 2018 焦作网络赛 L Poor God Water ( AC自动机构造矩阵、BM求线性递推、手动构造矩阵、矩阵快速幂 )
题目链接 题意 : 实际上可以转化一下题意 要求求出用三个不同元素的字符集例如 { 'A' .'B' .'C' } 构造出长度为 n 且不包含 AAA.BBB CCC.ACB BCA.CAC CBC ...
- codevs 2597 团伙x
题目描述 Description 1920年的芝加哥,出现了一群强盗.如果两个强盗遇上了,那么他们要么是朋友,要么是敌人.而且有一点是肯定的,就是: 我朋友的 ...
- Mybatis 结果映射下划线转驼峰
mybatis 结果映射下划线转驼峰 Spring Boot 配置: #下划线转驼峰 mybatis.configuration.map-underscore-to-camel-case=true m ...
- js多种方法取数组的最后一个元素
一: pop()方法 pop()方法,删除数组最后一个并返回该元素 利用这个方法可以取到数组的最后一个,同理shift()可以取到数组的第一个(shift()删除数组第一个并返回该元素) var ar ...
- Java多线程深度探索
线程 1.优先级 每个线程有一个优先级,更高优先级的线程优先运行,优先的意思是只是在分配cpu时间段的时候,得到的概率高一些.当在某个线程创建一个新的线程,这个线程有与创建线程相同的优先级.setPr ...
- linux上的syslog
在centos上,syslog其实是rsyslog,对应的配置文件为/etc/rsyslog.conf,守护进程为:/etc/rsyslog.d --------------------------- ...
- Linux环境快速搭建elasticsearch6.5.4集群和Head插件
https://blog.csdn.net/boling_cavalry/article/details/86358716
- 开源EDR(OSSEC)基础篇- 02 -部署环境与安装方式
https://yq.aliyun.com/articles/683077?spm=a2c4e.11163080.searchblog.9.753c2ec1lRj02l
- [NLP] 语义网络与知识图谱入门(二)
语义网络与知识图谱入门(二) OWL 本体声明 owl用owl:Ontology来声明一个本体.rdf:about属性为本体提供一个名称或引用.根据标准,当rdf:about属性的值为"&q ...
- Windows下搭建Docker与Kubernetes(DevOps一)
Docker与Kubernetes (二)搭建 开通 Hyper-V 安装Docker for Windows 开通Kubernetes 3.关键概念 PodKubernetes 中的最小单元,一个 ...