public class SparseArray {
public static void main(String[] args) {
/*
* 稀疏数组是一种二维数组。
* 当在二维数组中存在较多的无意义的数如0的时候,我们可以考虑采用稀疏数组以节省空间。
* 稀疏数组是一种n行3列的二维数组,arr[i][0]表示行,arr[i][1]表示列,arr[i][2]表示该位置对应的值。
* 在对应的稀疏数组的arr[0][i]中记录的是对应的总数据数。即总行数、总列数、总的记录值数。
*/
// 创建设置原始数组
int chessArr[][] = new int[11][11];
chessArr[1][2] = 1;
chessArr[2][3] = 2;
System.out.println("-----------------------------------------原始数组");
for (int[] arr : chessArr) {
for (int item : arr) {
System.out.printf("%d\t",item);
}
System.out.println();
}
System.out.println("-----------------------------------------END");
// 获取非0数据个数
int count = 0;
for (int[] arr : chessArr) {
for (int item : arr) {
if (item != 0) {
count++;
}
}
}
// 根据非0数据个数创建稀疏数组
/*
* 稀疏数组
* 第一行:
* 角标0元素(原始数组有多少行)
* 角标1元素(原始数组有多少列)
* 角标2元素(原始数组有多少个元素数据大于0的数据个数)
* 第二行至第n行:
* 角标0元素(大于0的该元素的行索引)
* 角标1元素(大于0的该元素的列索引)
* 角标2元素(大于0的该元素的值)
*/
int sparseArr[][] = new int[count + 1][3];
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = count;
// 设置稀疏数组里内容
int index = 0;
for (int i = 0; i < chessArr.length; i++) {
for (int j = 0; j < chessArr[i].length; j++) {
if (chessArr[i][j] > 0) {
index++;
sparseArr[index][0] = i;
sparseArr[index][1] = j;
sparseArr[index][2] = chessArr[i][j];
}
}
}
// 打印稀疏数组
System.out.println("-----------------------------------------稀疏数组");
for (int[] rowData : sparseArr) {
System.out.printf("%d\t%d\t%d\t\n", rowData[0], rowData[1], rowData[2]);
}
System.out.println("-----------------------------------------END");
// 稀疏数组还原原始数组
int reducArr[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
int rowIndex = sparseArr[i][0];
int colIndex = sparseArr[i][1];
int val = sparseArr[i][2];
reducArr[rowIndex][colIndex] = val;
}
System.out.println("-----------------------------------------打印还原原始数组");
for (int[] arr : reducArr) {
for (int item : arr) {
System.out.printf("%d\t",item);
}
System.out.println();
}
System.out.println("-----------------------------------------END");
}
}
相关推荐
智能车数字图像处理算法入门及C语言实现
智能车图像的最最基本入门算法介绍及C语言实现,二值化 - 特征识别 - 补线 - 中心巡线 - 偏差曲率计算。
java实现稀疏数组
java实现稀疏数组 稀疏数组用于减少对存储资源的占用,只适用于数据稀疏的情况,当数组中存储的的数据过多的时候,存储在稀疏数组中的数据量,可能比原数组的中数据量还大,就不适用了。 注:来还债了,初学数据结构。 二维数组转稀疏数组的思路: 1.遍历原始的二维数组,得到有效数据的个数sum 2.根据sum就可以创建稀疏数组sparseArr int[sum + 1][3] 3.将数组的有效数据存入到稀疏数组 稀疏数组转原始数组的思路: 1.先读取稀疏数组的第一行,根据第一行的数据, 创建原始的二维数组,比如上
TMC步进电机驱动stealthChop
经过九九八十一难,芯片手册拜读了好多遍,找了好多资料,问了好多人使用TMC2660驱动步进电机终于成功了。最后的问题居然是硬件把管脚画错了,然后我又没有检查,哭。。。
Java实现稀疏数组以及将稀疏数组存储到硬盘和从硬盘种读取操作
Java实现稀疏数组 原二维数组—>稀疏数组 稀疏数组—>原二维数组 将稀疏数组保存到硬盘中 将稀疏数组读入内存 为了扩展思维,练习编程,所以写法不一 从上到下看就好,没有对函数进行封装 package zc; /** * Java实现稀疏数组 * 原二维数组--->稀疏数组 * 稀疏数组--->原二维数组 * 将稀疏数组保存到硬盘中 * 将稀疏数组读入内存 ...
eLabRadio软件无线电虚实结合仿真开发平台简介
在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。
从零开始解析N-CMAPSS数据集:航空发动机健康管理的入门指南
本文详细解析了N-CMAPSS数据集在航空发动机健康管理中的应用,从数据集的构成、关键变量到实际数据分析方法,为初学者提供了全面的入门指南。通过Python代码示例,展示了如何加载、探索和建模这一复杂数据集,帮助读者掌握航空发动机性能预测的核心技术。
Java二维数组转稀疏数组,稀疏数组还原二维数组
Java稀疏数组 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方式是: 记录数组一共有几行激烈,有多少个不同值。 把具有不同值的元素和行列及只记录在一个小规模的数组中,从而缩小程序的规模。 左边为原始数组,右边为稀疏数组 稀疏数组的转换 public static void main(String[] args) { //1.创建一个二维数组11*11 0:没有棋子 1:黑棋 2:白棋 int[
TwinCAT报SSE invalid operation错误
错误类型 TwinCAT程序中报出以下错误: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 **** 383 ms | 'Port_851' (851): Exception (Exception Code: 0xc0000090, SSE invalid operation) in PLC Application Untitled1 Instance, Task PlcTask (RBP: 0xffffb3016c80ecc0, RIP: 0xffffe708ee5b5f53, RSP:
稀疏数组【JAVA】
稀疏数组可以看作是对普通数组的压缩处理,从而节约存储空间、运算资源。
保姆级教程:手把手教你给联想System x 3650 M5服务器配置RAID 5并U盘装系统
本文提供联想System x 3650 M5服务器配置RAID 5并U盘安装系统的详细教程,特别适合零基础运维人员。从准备工作、RAID 5配置到U盘引导和系统安装,涵盖全流程关键步骤与常见问题解决方案,帮助用户高效完成服务器部署。
Spring AI Alibaba 1.x 源码分析-架构设计
本文通过分析Spring AI Alibaba 框架的源码,分析出其原理和架构设计,无论是用于项目开发、技术评估还是团队培训都具有重要价值。
Java稀疏数组
Java稀疏数组 稀疏数组 1.创建一个二维数组 11*11 保存棋盘 0:没有棋子 1:黑棋 2:白棋 2.创建一个稀疏数组的数组 3.还原稀疏数组 package com.LittleWu.Array; import com.sun.xml.internal.ws.addressing.WsaActionUtil; public class ArrayDemo08 { public static void main(String[] args) { /* 稀疏数组
零基础教你学RDMA驱动开发:从入门到精通--第6章 内存管理与DMA映射6.2 DMA地址转换:内核dma_map_single()与硬件IOVA(I/O虚拟地址)
本文深入探讨RDMA驱动中DMA地址转换机制,重点分析内核dma_map_single()函数与硬件IOVA的作用。主要内容包括:1)DMA地址转换的必要性,解决CPU虚拟地址与HCA设备DMA地址的空间割裂问题;2)内核DMA映射机制实现原理,涵盖无IOMMU(直接物理地址映射)和有IOMMU(IOVA转换)两种场景;3)硬件IOVA的工作流程及其与RDMA内存注册的结合;4)RDMA驱动开发中的关键问题,如缓存一致性、映射方向错误、IOVA泄漏等;5)以mlx5驱动为例的实践分析。文章强调DMA地址转换
java实现稀疏数组及将稀疏数组存入硬盘中
1、二维数组的创建 2、二维数组的输出 2、稀疏数组的建立 3、稀疏数组的输出 4、将稀疏数组加入硬盘中 package com.huaziran.SparseArray; import java.io.*; import java.util.ArrayList; import java.util.List; public class Array { public static void main(String[] args) { //创建一个11行11列的二维数组
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
蓝牙模块HM-10手册
蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。
关于java的稀疏数组
我们在前面的文章中了解了冒泡排序和优化冒泡排序,在本篇文章中我们来介绍一下稀疏数组,我们学会了可以自己动手做一下试试😀
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
稀疏数组——二维数组转稀疏数组及稀疏数组转二维数组的Java代码实现
二维数组转稀疏数组及稀疏数组转二维数组的Java代码实现
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
java实现稀疏数组和普通数组的转换
#java实现稀疏数组和普通数组的转换 /** * 稀疏数组 */ public class SparseArrayTest { public static void main(String[] args) { // 从普通数组转到稀疏数组 //1.先建立一个普通数组,遍历得到有效数据。 0代表无效数据 1.代表蓝色 2.代表黑色 ...
Java二维数组与稀疏数组转换
基本介绍 一个数组中大部分元素为0时,或者为同一个值的时,可以使用稀疏数组来保存该数组.这样可以节省空间,提高效率. 处理方法 记录二维数组行列数,有多少个不同值 把具有不同值的元素的行和列及值记录在一个小规模的数组中,从而缩小程序的规模. 实现思路 二维数组 到 稀疏数组: 遍历原始二维数组,得到非0个数count 构建稀疏数组sparseArr[count+][3] 二维数组非0元素存入...
java实现稀疏数组压缩
package sparseArray; public class SparseArray { public static void main(String[] args) { // TODO Auto-generated method stub //创建一个原始的二维数组 // 0表示没有棋子,1...
Java实现稀疏数组
目录一、引入二、二维数组三、将二维数组转化为稀疏数组1、思路2、代码实现四、将稀疏数组转化为二维数组1、思路2、代码实现 一、引入 普通二维数组 稀疏数组 0 0 0 0 0 3 5 1 0 0 1 0 0 1 2 1 0 0 0 0 0 有时二维数组比较占用空间,如上的二维数组就可以用旁边的稀疏数组表示,可以节省大量空间 二、二维数组 二维数组一般是多行三列 第一行第一二列为原二维数组的
Java多维数组及稀疏数组
本文内容主要是学习一下稀疏数组,和对多维数组的理解,同时也回顾了数组在Java中的声明与访问,遍历数组的方式,以及用Java代码实现二维数组和稀疏数组之间的转换
java 稀疏数组
1、概念 当一个二维数组中大部分元素为0或则为同一个值时,可以使用稀疏数组保存这个二维数组 2、处理方式 1)稀疏数据的第一行分别存二维数组的几行几列以及二维数据中不为0的元素个数 2)将二维数据的行列几元素值存放到稀疏数组中 3、示例 原数组如下: 转换为稀疏数组如下: 4、java代码实现如下 ...
将稀疏数组还原——java
package com.baidu.数组; public class Demo还原稀疏数组 { public static void main(String[] args) { int array1[][] = //已知一个十行九列的稀疏数组 { {10, 9, 10}, {0, 3, 678}, .
Java数组07:稀疏数组
稀疏数组特别适用于处理像棋盘、地图这样大部分元素为0或同一值的二维数组,通过稀疏数组可以有效减少存储空间的浪费。稀疏数组(sparse array)在Java中是一种针对大部分元素为默认值或特定值的数组进行优化的存储结构。其中,第一列表示非默认值(非0)的行号,第二列表示非默认值(非0)的列号,第三列表示对应的值。通过这种方式,可以用较小的存储空间来表示具有大量默认值的数组,从而提高存储效率。其基本思想是只存储非默认值的元素及其对应的位置信息,以减少内存的使用。
【Java数据结构】稀疏数组
1.稀疏数组 当一个数组中大部分元素为0,或者为同一个值的时候,可以用稀疏数组来保存该数组。 稀疏数组的处理方法: 1.记录数组一共有几行几列,有多少个不同的值 2.把具有不同元素的行列及值记录在一个小规模数组中,从而缩小程序规模。 2,代码实现 /** * 稀疏数组 * * @author wangjie * @version V1.0 * @date 2019/12/...
5112



被折叠的 条评论
为什么被折叠?



