数据结构学习记录(一)——稀疏数组

数据结构:稀疏数组 学习图解Java数据结构和算法的笔记 所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。 应用场景:棋盘,地图 举例:棋盘(二维数组与稀疏数组的转换) 实现代码(Java) package com.s... 阅读详情

稀疏数组:
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法:
(1)记录数组一共有几行几列,有多少个不同的值;
(2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

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

稀疏数组 恢复到 原始二维数组思路:
1、先读取稀疏数组的第一行,根据第一行的数据,得知原始二维数组的行、列数和有效值个数
2、读取稀疏数组后几行的数据,并赋给原始的二维数组。

Java代码实现:

public static SparseArray{
	public static void main(String[] args){
		//chessArr1 表示一个棋盘
		//0 表示没有落子, 1 表示白子,2 表示蓝子
		int chessArr1[][] = new int[11][11];//设11*11的棋盘,即11行11列的数组
		chessArr1[1][2] = 1; //原始数组第二行第三列有效数字1
		chessArr1[2][3] = 2; //原始数组第三行第四列有效数字2
		chessArr1[4][5] = 2; //原始数组第五行第六列有效数字2
		
		//输出原始二维数组
		System.out.println("原始的二维数组:");
		for (int[] row:chessArr1){
			for (int[] data:row){
				Syatem.out.println("%d\t",data);
			}
			System.out.println();
		}
		//将二维数组 转 稀疏数组
		//1、先遍历二维数组 得到非0数据的个数
		int sum = 0;
		for (int i=0;i<11;i++){
			for (int j=0;j<11;j++){
				if (chessArr1[i][j] != 0){
					sum ++;
				}
			}
		}
		//2、创建对应的稀疏数组
		int sparseArr[][] = new int[sum + 1][3];
		//给稀疏数组赋值
		sparseArr[0][0] = 11;
		saprseArr[0][1] = 11;
		saprseArr[0][2] = sum;
		//遍历二维数组,将非0的值存放在sparseArr中
		int count = 0; //记录是第几个非0的值
		for (int i=0;i<11;i++){
			for(int j=0;j<11;j++){
				if(chessArr1[i][j] != 0){
					count ++;
					sparseArr[count][0] = i;
					sparseArr[count][1] = j;
					sparseArr[count][2] = chessArr1[i][j];
				}
			}
		}
		//输出稀疏数组的形式
		System.out.println();
		System.out.println("得到的稀疏数组:");
		for(int i=0;i<sparseArr.length;i++){
			System.out.printf("%d\t%d\t%d\t",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
		}
		System.out.println();

		//将稀疏数组 恢复成 二维数组
		//1、先读取稀疏数组的第一行,获得二维数组的行、列数
		//2、读取稀疏数组后几行的数据,并且赋值给原始数组

		//先读取稀疏数组第一行,创建二维数组
		int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
		//读取稀疏数组后几行,并赋值给原始的二维数组
		for(int i=1;i<sparseArr.length;i++){
			chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparse[i][2];
		}
		//输出恢复后的二维数组
		System.out.println();
		System.out.println("恢复后的二维数组");
		for(int[] row:chessArr2){
			for(int data:row){
				System.out.printf("%d\t",data);
			}
			System.out.println();
		}
	}
}
数据结构——稀疏数组 数据结构: 线性结构: (1)数据元素之间存在一对一线性关系 (2)有两种不同存储结构,即顺序存储结构和链式存储结构,顺序存储的线性结构为顺序表,顺序表中的存储单元是连续的 (3)链式存储结构的线性表称为链表,链表中元素不一定连续,元素节点中存放数据元素以及相邻节点的地址信息 (4)常见的线性结构:数组、队列、链表和栈 非线性结构:包括二维数组、多维数组、广义表、树结构、图结构 1.稀疏数组 ... 阅读详情

相关推荐

Xilinx Aurora 8B/10B IP核详解和仿真

Xilinx Aurora 8b/10b IP核的详解,以及使用与仿真示例,对IP核的配置和如何仿真有非常详细的说明,除了对IP核官方文档的内容进行了解析以外,还对GTX引脚的选择等比较容易混淆和不好理解的地方进行了说明。最后对IP核的仿真运行进行了STEP BY STEP 的说明,对仿真的结果也进行了简要的说明。 该文档对Xilinx FPGA和ZYNQ SOC下 AURORA 8B/10B IP核的使用提供了一个快速上手的指导。

weixin_43354598的博客 1万+

稀疏数组(SparseArray)学习记录

稀疏数组基本介绍实例思路代码实现 本文旨在加深学习印象并留记录以供日后查看。学习视频为韩顺平图解Java数据结构和算法,以下内容来自于视频内容与自我总结。如有错误请您指正。 基本介绍 稀疏数组通俗的讲 可以看做是对具有大量无效数据的普通数组的压缩 例如: //普通数组 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

hyf_0328的博客 311

基于h5端的视频录制和回溯功能的实现

整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。

发果叁 3191

java数据结构(1) 稀疏数组sparsearray

java数据结构(1) 稀疏数组sparsearray 此博客为学习笔记,学习尚硅谷java数据结构课程后所撰写的笔记。 1. 需求案例 1.1 保存棋盘信息至文件 假如把白棋设为1,黑棋设为2,空棋设为0,将棋盘看作一个二维数组。 当棋子数较少时,0很多,使用二维数组保存数据到文件中,会保留大量无用的0 (这是没什么意义的数据) 2. 稀疏数组简介 2.1 使用方法 记录数组行列数以及多少个不...

小蜉蝣星蔚的博客 936

AVL_Cruise_interface\Simulink联合仿真

分享了AVL_Cruise通过interface模块与Simulink进行联合仿真的过程

qq_64735036的博客 2678

告别臃肿!保姆级教程:用NTLite深度精简Win10,打造你的专属纯净系统(附完整组件移除清单)

本文提供了一份详细的NTLite教程,帮助用户深度精简Windows10系统,移除冗余组件并优化性能。从准备工作到组件移除清单,再到系统配置优化和无人值守安装,逐步指导用户打造专属纯净系统。附完整组件移除清单和实战经验,确保系统稳定高效运行。

weixin_30945039的博客 859

1.JAVA稀疏数组(存到磁盘中,再从磁盘中读出)

注:这是看了尚硅谷,韩顺平老师《java数据结构和算法》视频后,做的笔记。 稀疏数组:是sum+1行,3列的 sum:原数组有效元素的个数(图中map 1 的个数) 稀疏数组第一行意思:原数组的行数,原数组的列数,有校值的个数 稀疏数组后面行意思:有效值所在的行数,有效值所在的列数,有效值 public class SparseArrayTest { public static void main(String[] args) throws IOException { // 定义一

HELANL的博客 1111

AUTOSAR Dem模块实战配置:从理论到代码生成的完整指南

本文提供了一份AUTOSAR Dem模块从理论到代码生成的完整实战配置指南。文章详细拆解了配置流程,涵盖Dem模块的核心角色、通用骨架搭建、事件与DTC映射、消抖机制配置,以及与BswM、EcuM、DCM等模块的联调方法,旨在帮助汽车电子工程师快速掌握诊断事件管理的关键配置步骤,生成可运行的代码。

3c4x5z6v7b的博客 455

Java尚硅谷数据结构与算法学习记录(1)-二维数组转稀疏数组并存入文件

package com.lylicoo.sparsearray; import java.io.*; /* 二维数组转稀疏数组的思路: 1、遍历原始的二维数组chessArr1,得到有效数据的个数sum 2、根据sum就可以创建稀疏数组sparseArr int[sum+1][3] 3、将原始二维数组的有效数据存入稀疏数组 稀疏数组转原始二维数组的思路: 1、读取稀疏数组的第一行,根据第一行...

qq_38715538的博客 233

18、深入解析航空飞行数据中的秘密:从数据清理到高级分析

本文详细解析了如何使用R语言处理和分析航空飞行数据,从基础的数据清理到复杂的回归分析和机器学习模型构建。文章涵盖了探索性数据分析、天气数据的整合、地理信息可视化、时间序列预测以及航班延误的优化策略等内容,展示了如何通过数据挖掘技术提高航空运营效率和乘客满意度,并探讨了数据质量评估与隐私保护的重要性。

convnet3designer的博客 107

微信小程序 - 真机调试调用接口报错{errno: 600001, errMsg: “request:fail -102:net::ERR_CONNECTION_REFUSED},真机运行测试请求异常

微信小程序,真机,调试测试,运行报错,API接口,服务器接口都报错了,小程序报错errno: 600001,小程序报错request:fail -102:net::ERR_CONNECTION_REFUSED,真实手机打开接口全都失效了,微信小程序真机测试失败,微信小程序{errno: 600001, errMsg: "request:fail -102:net::ERR_CONNECTION_REFUSED"},详细解决方法,https,服务器SSL证书,无法解决,服务器更换SSL证书,接口地址改了也不行

🏆 前端领域优质创作者 1万+

尚硅谷数据结构和算法01-数据结构介绍和稀疏数组

数据机构介绍和稀疏数组

qq_52034030的博客 760

【花雕学编程】Arduino ESP32 SPP 之使用Servo库控制360度舵机正反转

使用 Servo 库控制 360 度舵机的正反转是 Arduino ESP32 SPP 应用中的一个重要案例,具有简易控制接口、灵活速度调节和高兼容性等特点,广泛应用于机器人、自动化装置和动态艺术等领域。在第三个案例中,使用map()函数将用户输入的速度参数(范围0-100)映射到舵机控制的角度(0-180),使得用户能够以更人性化的方式控制舵机速度。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。

雕爷学编程 1469

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

稀疏数组是一种优化策略,它利用了数组中大量重复或无效信息的特点,通过只存储有意义的数据,大大降低了存储成本并提高了处理效率,特别适用于具有大规模但低密度数据存储和计算的场景。将二维数组转换回稀疏数组时, 首先,需要对原始的二维数组进行逐行逐列遍历,统计其中非零元素的数量。根据统计出的有效(非零)数据个数count,创建一个新的三维数组作为稀疏数组,其大小通常是。之所以是count + 1是因为稀疏数组的第一行通常用来记录原二维数组的行数、列数以及有效元素总数。

m0_62988332的博客 1458

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

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

在编程中,算法的重要性不言而喻,没有算法的程序是没有灵魂的。可见算法的重要性。 然而,在学习算法之前我们需要掌握数据结构,数据结构是算法的基础。 我在大学的时候,学校里的数据结构是用C语言教的,因为对C语言也不是很了解,所以掌握得不是特别好,在网上找的一些学习资料里也基本都是用C语言来进行数据结构的教学。 那么,从本篇文章开始,我将用Java语言来介绍数据结构,当然,数据结构过后就是算法。 标题 ...

。。。 3463

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数据结构 - 稀疏数组

当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。记录数组一共有几行几列,有多少个不同的值。把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。

mry6的博客 1853

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数据结构与算法——稀疏数组

小总结:将二维数组转换为稀疏数组的:首先遍历二维数组,统计非零元素的个数。接着再次遍历二维数组,将非零元素的行、列、值信息保存到稀疏数组中。然后根据稀疏数组的后几行数据,将对应的值赋给二维数组。稀疏数组是一种特殊的数组数据结构,用于表示大部分元素值为默认值或者为零的数组。它通过只存储非默认值或非零元素的索引和对应的值,来减少内存占用。当数组中的元素值发生变化时,可以根据需要添加或删除相应的索引和值,以保持数组的稀疏性。:稀疏数组使用索引来映射元素值,使得对数组的访问更加高效。将稀疏数组转换为二维数组。

Benmao的博客 1290

稀疏数组学习记录

package com.atguigu.sparsearray; /** * @author wststart * @create 2019-06-14 21:27 */ public class SparseArray { public static void main(String[] args) { // 创建一个原始的二维数组 11 * 11 // ...

Carry_bluebuff的博客 230

java数据结构之稀疏数组

一:什么是稀疏数组? 稀疏数组说到底也是一种数组,只不过它表示的是对另一个数组数据的一种特殊表示。所谓的特殊表示就是把一个数组中的行数、列数、对应的具体的数值这三个值记录在另一个数组中,从而缩小了数组的规模。这样的被缩小规模后的数组成为稀疏数组。如图: 二:为什么需要稀疏数组? 为了节省内存节省资源,因此我们需要稀疏数组。 三:什么时候用稀疏数组? 当一个数组中大多数元素为同一个值的时候,那么这个数组中大多数具有相同值得元素我们一定要一一存储吗?...

weixin_64591616的博客 1111

Java数据结构之稀疏数组

元素之间存在严格顺序关系,每个元素都与唯一的一个元素相邻,一个元素的前一个元素就是它的前驱元素,后一个元素就是它的后继元素。玩五子棋游戏,会有一个存档的功能,如果将盘上的所有的点都存下来会影响性能,这个时候可以通过稀疏数组来压缩棋盘来存储对应的位置,精确记录非默认值元素的信息,以节省存储空间和处理效率。这些线性结构在计算机科学和编程中都有广泛的应用,每种结构都适用于不同的问题和场景,根据需求选择合适的数据结构可以提高算法的效率和代码的可读性。多维数组可以被视为非线性结构,因为元素之间的关系不仅仅是线性的。

qq_41857955的博客 1541

数据结构学习之路一: 稀疏数组

数据结构学习之路一: 稀疏数组记录每一天美好的学习生活,更多请移步 中国哔哩哔哩大学 记录每一天美好的学习生活,更多请移步 中国哔哩哔哩大学 (有更好的代码写法,欢迎指正,0101) package com.zhutz.sparsearray; import java.io.*; import java.util.*; public class SparseArray { // 将一...

qq_43128724的博客 176

数据结构学习笔记(一):稀疏数组

数据结构学习笔记(一):稀疏数组 ​ 一、 稀疏数组的概念 ​ 例如,五子棋程序中,有存盘推出和续上盘的功能。如果要实现这个功能,最简单的方法就是用二维数组储存。如下所示 ​ 可是该二维数组中很多值是0,因此记录了很多没有意义的数据。因此可以用到稀疏数组来对二维数组进行压缩。 ​ 当一个数组大部分元素为0,或者为同一个值的时候,可以使用稀疏数组来保存该数组。 ​ 稀疏数组的处理方法是: ​ 1....

想教猫咪学Java 522

数据结构之稀疏数组,保存到磁盘,从磁盘中读取

稀疏数组保存到磁盘,从磁盘中读取 一、数据结构包括:线性结构和非线性结构 ① 线性结构 (1)、线性数据结构作为最常见的数据结构,其特点是数据元素之间存在一对一的线性关系 (2)、线性数据结构有两种不同的存储结构,即顺序存储结构(数组)和链式存储结构(链表),顺序存储的线性表称为顺序表,顺序表中存储的元素是连续的。 (3)、链式存储的线性表称之为链表,链表中存储的元素不一定是连续的,元素节点中存放数据元素以及相邻元素的地址值。 (4)、线性结构常见的有:数组、队列、链表和栈 ② 非线性结构 (1)、非线性结

Blooming death的博客 1706

数据结构——稀疏数组与二维数组

title: 稀疏数组与二维数组 categories: 数据结构 tags: 数据结构 typora-root-url: …/ abbrlink: 1245787517 date: 2019-09-20 16:40:15 稀疏数组 介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 处理方式 记录数组一共有几行几列,有多少个不同的值 把具...

李亚飞的博客 2844

数据结构和算法学习——稀疏数组

稀疏数组的实现,包括将稀疏数组存入磁盘并取出

雷神乐乐的博客 572

Java数据结构-稀疏数组的实现[用最简单的语言理解最复杂的问题]

看完本篇博客,你的扫雷项目或者五子棋项目一定会比别人强,做别人眼中最靓的仔

算法萌新一枚 1510
上一篇: Hadoop(一)----HDFS的API操作
下一篇: Hadoop(二)——HDFS的 I/O 流操作
五花尾巴
博客等级 码龄7年 0粉丝 32原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值