数据结构(一)--稀疏数组
数据结构复习笔记(一)–稀疏数组
介绍
在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。
如:
0 0 0 0 0 0 0 0 0 0 0
0 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 10 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
1 0 1 5 0 0 0 6 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
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 0 0 0 0 0 0 0 0转化存储后:
11 11 7
1 2 1
2 3 2
3 5 10
5 0 1
5 2 1
5 3 5
5 7 6
实现代码
public static void main(String[] args) {int[][] Arr = new int[6][5];Arr[0][3] = 2;Arr[1][4] = 7;Arr[2][4] = 4;Arr[4][1] = 4;//原始数组先并统计有效数据个数int sum = 0;System.out.println("原始数组:");for(int i =0;i<Arr.length;i++){for(int j=0;j<Arr[0].length;j++){System.out.print(Arr[i][j]+"\t");if(Arr[i][j]!=0) sum++;}System.out.println();}System.out.println("有效数据个数:"+sum);//稀疏矩阵初始化(最前面一行保存行,列,有效数据个数)int[][] spareArr = new int[sum+1][3];spareArr[0][0] = Arr.length;spareArr[0][1] = Arr[0].length;spareArr[0][2] = sum;//生成稀疏矩阵int index = 1;for(int i =0;i<Arr.length;i++){for(int j=0;j<Arr[0].length;j++) {if (Arr[i][j] != 0) {spareArr[index][0] = i;spareArr[index][1] = j;spareArr[index][2] = Arr[i][j];index++;}}}//打印稀疏矩阵System.out.println("稀疏矩阵转化存储后:");for(int i =0;i<spareArr.length;i++) {for (int j = 0; j < spareArr[0].length; j++)System.out.print(spareArr[i][j] + "\t");System.out.println();}}
结果
原始数组:
0 0 0 2 0
0 0 0 0 7
0 0 0 0 4
0 0 0 0 0
0 4 0 0 0
0 0 0 0 0
有效数据个数:4
稀疏矩阵转化存储后:
6 5 4
0 3 2
1 4 7
2 4 4
4 1 4
数据结构(一)--稀疏数组相关推荐
- 算法与数据结构(稀疏数组)
稀疏数组 Sparse Array 当一个数组中有大量元素相同时,可以用稀疏数组来表示,通过将有用信息记录在小规模的数组中来缩减程序规模 原数组: [0000102000300000004000000 ...
- 数据结构之稀疏数组 - SparseArray
关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 1,定义 稀疏数组可以看作普通二维数组的压缩,这里的普通数组指无效数据远大于有效数据 稀疏数组分为3列 行 列 ...
- 【数据结构】稀疏数组
稀疏数组保存五子棋棋盘 思路:二维数组模拟棋盘 --->稀疏数组--->序列化到文件中保存--->反序列化得到稀疏数组--->还原二维数组 对象序列化需要实现Seriali ...
- 数据结构之稀疏数组队列
文章目录 1.稀疏数组 1.1.实际需求 1.2.稀疏数组应用 1.2.1.稀疏数组处理方法 1.2.2.举例说明 1.3.应用实例 1.3.1.思路分析 1.3.2.代码实现 1.4.课后练习 2. ...
- 数据结构与算法---稀疏数组
数据结构与算法-稀疏数组 1.基本介绍: 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 2.稀疏数组的处理方法是: (1)记录数组一共有几行几列,有多少个 ...
- 稀疏数组(数据结构)
稀疏数组(数据结构) 需求:编写五子棋游戏中,有存盘和续上盘的功能 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 ...
- 数据结构与算法————稀疏数组
引言 数据压缩方面,我们往往可以通过稀疏数组来保存有效数据,节省存储空间. 一.稀疏数组的概念 当一个数组中大部分元素是0,或为同一个值的时候,可以使用稀疏数组来保存数组. 它是一个十分有效的存储结构 ...
- 【Java数据结构与算法】第一章 稀疏数组和队列
第一章 稀疏数组和队列 文章目录 第一章 稀疏数组和队列 一.线性结构和非线性结构 1.线性结构 2.非线性结构 二.稀疏数组 三.队列 1.队列 2.环形队列 一.线性结构和非线性结构 1.线性结构 ...
- 稀疏数组练习demo 数据结构和算法
稀疏数组课后练习demo 数据结构和算法 实现了二维数组转稀疏数组保存到文件,读文件再转为二维数组 import java.io.*; import java.util.Arrays;/*** htt ...
最新文章
- js调用ios的方法
- FFMPEG 提取码流的基本信息
- java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入
- 机器学习经典书籍小结
- python模块之keyword
- jmeter分布式测试配置
- java怎么设置快速修复键_Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using...
- 小甲鱼 OllyDbg 教程系列 (一) :二进制破解科普系列之 ReverseMe
- ic卡消费管理系统_详述食堂消费系统的功能特点
- android+默认存储,Android 数据存储之SP存储,内部存储,外部存储
- 逻辑斯蒂回归:家庭买私家车的概率
- 官方 mysql管理工具下载_飘云mysql管理工具
- 惯量比多少合适_惯量比折算问题
- python巡检网络设备_pyhton对网络设备的日常巡检
- 3.3计算机网络(ALOHA协议 CSMA协议 令牌传递协议 频分时分波分码分)
- 算法学习的一些个人心得
- 一个人怎么做好社群的日常高效管理?
- VFS(virtual File System) 虚拟文件系统
- wireshark https 抓包
- 谷歌2018博士生奖研金名单出炉,清华、上交大多人入选
热门文章
- 封装 js 插件 实例
- c++ explicit 修饰构造函数
- Maven最佳实践 划分模块 配置多模块项目 pom modules
- PHP实现带重试功能的curl连接示例
- ThinkPHP5跨控制器调用
- CodeReview学习与总结
- c语言实验答案周信东第三章,桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf...
- 让div margin属性消失_为什么div里面打一个字之后就会有高度了呢?
- 微信小程序将页面按钮悬浮固定在底部
- mysql表的类型_浅谈MySQL表类型