数据结构复习笔记(一)–稀疏数组

介绍

在矩阵中,若数值为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

数据结构(一)--稀疏数组相关推荐

  1. 算法与数据结构(稀疏数组)

    稀疏数组 Sparse Array 当一个数组中有大量元素相同时,可以用稀疏数组来表示,通过将有用信息记录在小规模的数组中来缩减程序规模 原数组: [0000102000300000004000000 ...

  2. 数据结构之稀疏数组 - SparseArray

    关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 1,定义 稀疏数组可以看作普通二维数组的压缩,这里的普通数组指无效数据远大于有效数据 稀疏数组分为3列 行 列 ...

  3. 【数据结构】稀疏数组

    稀疏数组保存五子棋棋盘 思路:二维数组模拟棋盘 --->稀疏数组--->序列化到文件中保存--->反序列化得到稀疏数组--->还原二维数组   对象序列化需要实现Seriali ...

  4. 数据结构之稀疏数组队列

    文章目录 1.稀疏数组 1.1.实际需求 1.2.稀疏数组应用 1.2.1.稀疏数组处理方法 1.2.2.举例说明 1.3.应用实例 1.3.1.思路分析 1.3.2.代码实现 1.4.课后练习 2. ...

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

    数据结构与算法-稀疏数组 1.基本介绍: ​ 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 2.稀疏数组的处理方法是: ​ (1)记录数组一共有几行几列,有多少个 ...

  6. 稀疏数组(数据结构)

    稀疏数组(数据结构) 需求:编写五子棋游戏中,有存盘和续上盘的功能 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 ...

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

    引言 数据压缩方面,我们往往可以通过稀疏数组来保存有效数据,节省存储空间. 一.稀疏数组的概念 当一个数组中大部分元素是0,或为同一个值的时候,可以使用稀疏数组来保存数组. 它是一个十分有效的存储结构 ...

  8. 【Java数据结构与算法】第一章 稀疏数组和队列

    第一章 稀疏数组和队列 文章目录 第一章 稀疏数组和队列 一.线性结构和非线性结构 1.线性结构 2.非线性结构 二.稀疏数组 三.队列 1.队列 2.环形队列 一.线性结构和非线性结构 1.线性结构 ...

  9. 稀疏数组练习demo 数据结构和算法

    稀疏数组课后练习demo 数据结构和算法 实现了二维数组转稀疏数组保存到文件,读文件再转为二维数组 import java.io.*; import java.util.Arrays;/*** htt ...

最新文章

  1. js调用ios的方法
  2. FFMPEG 提取码流的基本信息
  3. java将clob类型文件写到磁盘_Java对Oracle中Clob类型数据的读取和写入
  4. 机器学习经典书籍小结
  5. python模块之keyword
  6. jmeter分布式测试配置
  7. java怎么设置快速修复键_Java开发环境之------MyEclipse快捷键和排除错误第一选择ctrl+1(***重点***:ctrl+1,快速修复---有点像vs中的快速using...
  8. 小甲鱼 OllyDbg 教程系列 (一) :二进制破解科普系列之 ReverseMe
  9. ic卡消费管理系统_详述食堂消费系统的功能特点
  10. android+默认存储,Android 数据存储之SP存储,内部存储,外部存储
  11. 逻辑斯蒂回归:家庭买私家车的概率
  12. 官方 mysql管理工具下载_飘云mysql管理工具
  13. 惯量比多少合适_惯量比折算问题
  14. python巡检网络设备_pyhton对网络设备的日常巡检
  15. 3.3计算机网络(ALOHA协议 CSMA协议 令牌传递协议 频分时分波分码分)
  16. 算法学习的一些个人心得
  17. 一个人怎么做好社群的日常高效管理?
  18. VFS(virtual File System) 虚拟文件系统
  19. wireshark https 抓包
  20. 谷歌2018博士生奖研金名单出炉,清华、上交大多人入选

热门文章

  1. 封装 js 插件 实例
  2. c++ explicit 修饰构造函数
  3. Maven最佳实践 划分模块 配置多模块项目 pom modules
  4. PHP实现带重试功能的curl连接示例
  5. ThinkPHP5跨控制器调用
  6. CodeReview学习与总结
  7. c语言实验答案周信东第三章,桂林电子科技大学C语言程序设计习题答案周信东实验顺序结构与逻辑运算.pdf...
  8. 让div margin属性消失_为什么div里面打一个字之后就会有高度了呢?
  9. 微信小程序将页面按钮悬浮固定在底部
  10. mysql表的类型_浅谈MySQL表类型