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实现稀疏数组压缩的更多相关文章

  1. Java的稀疏数组的简单代码实现

    目录 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 二.稀疏数组的Java代码实现思路 三.稀释数组的Java代码实现 四.结语 Java的稀疏数组的简单代码实现 一.稀疏数组的基本概念 ...

  2. java算法--稀疏数组

    数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是 ...

  3. 图解Java数据结构之稀疏数组

    在编程中,算法的重要性不言而喻,没有算法的程序是没有灵魂的.可见算法的重要性. 然而,在学习算法之前我们需要掌握数据结构,数据结构是算法的基础. 我在大学的时候,学校里的数据结构是用C语言教的,因为对 ...

  4. 数据结构(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 ...

  5. 数据结构与算法之java语言实现(一):稀疏数组

    一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...

  6. Java数据结构之稀疏数组(Sparse Array)

    1.需求 编写的五子棋程序中,有存盘退出和续上盘的功能.因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组. 2.基本介绍 当一个数组中大部分元素为0,或者为 ...

  7. 【学习总结】java数据结构和算法-第三章-稀疏数组和队列

    相关链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 稀疏数组 队列 稀疏数组 稀疏数组介绍 图示 应用实例 代码实现 SparseArray.java:与二 ...

  8. Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组

    目录 数组概述 数组声明创建 内存分析 java内存分析 堆 栈 方法区 三种初始化 静态初始化 动态初始化 数组的默认初始化 数组的四个基本特点 数组边界 小结: 数组使用 数组基础使用 For E ...

  9. Java数据结构和算法(2)之稀疏数组

    1.定义 稀疏数组可以看做是普通二位数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组,关于稀疏数组的运用有五子棋盘,地图等.. *当一个数组中大部分元素为0,或者为同一个值的数组时 ...

随机推荐

  1. head first 设计模式笔记5-单例模式

    目录: 1.单例模式(Singleton Pattern) 2.概念 3.饿汉式:不是延迟加载,加载类的时候直接初始化 4.懒汉式:延迟加载,首次需要使用的时候在实例化,需要考虑线程安全 5.静态内部 ...

  2. Springboot 使用mybatis

    Springboot 使用mybatis 依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  3. POJ1703--Find them, Catch them(种类并查集)

    Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 32909Accepted: 10158 Description The polic ...

  4. 二分mid的取法

    二分的两种形式: 1.范围缩小时,r = mid,l = mid + 1,取中间值时,mid = (l + r) >> 1. 2.范围缩小时,l = mid,r = mid - 1,取中间 ...

  5. jQuery file upload 服务端返回数据格式

    Using jQuery File Upload (UI version) with a custom server-side upload handler 正常的返回结果,即上传文件成功 Exten ...

  6. ActiveMQ配置文档

    本文介绍一对一.一对多.持久化.非持久化消息配置方式 一.创建项目 导入jar 二.创建MQ.xml <!-- 配置JMS连接工厂 --> <bean id="connec ...

  7. @RequestMapping注解学习

    1.@RequestMapping注释用于映射url到控制器类或一个特定的处理程序方法.可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. 参考地址:https://ww ...

  8. 深入理解android的UI更新机制

    深入理解android的UI更新机制 由问题开始: 如何更新android UI? 可以通过如下方法: 在主线程里直接操作UI控件. handler.post(Runnable) runOnUiThr ...

  9. setcookie()函数

    PHP PDO使用fetchAll()方法获取结果集 fetchAll()方法获取结果集中的所有行数据记录. fetchAll()方法的语法格式如下: array PDOStatement::fetc ...

  10. SAP MaxDB日常运维—启动、关闭、磁盘扩容

    SAP MaxDB日常维护1.检查MaxDB状态,并启动su - pe0csccd /sapdb/SDB/db/bin./dbmcli -d SDB -u superdba,Mypassword db ...