| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 关于数据结构中的稀疏数组简单案例——java版 -> 正文阅读 |
|
[数据结构与算法]关于数据结构中的稀疏数组简单案例——java版 |
首先,我们来说一下稀疏数组的定义 ? ? ? ? 如果一个数组中,某一个元素M出现的总数远远大于其他元素出现的次数的总和,那么这个数组可以用稀疏数组来保存。 ? ? ? ?假设你要把一个棋盘存储存入文件,如果直接将原数组存入,极大的占用了文件空间,这时候稀疏数组就发挥作用了 ? ? ? ?稀疏数组的处理方法: ? ? ? ? ? ? 1)记录数组一共有几行几列,一共有多少个不同的值。 ? ? ? ? ? ? 2)把具有不同值的元素的行列记录在一个小规模数组中,这个小规模数组就是稀疏数组。 ? ? ? ?使用稀疏数组的目的: ? ? ? ? ? ? ?缩小规模,节省空间。 示例棋盘 二维数组转稀疏数组的思路 ? ? ? ? ? ? 1)遍历原始的二维数组,得到有效数据的个数sum ? ? ? ? ? ? 2)根据sum可以创建稀疏数组→SpareArr[sum+1][3] ? ? ? ? ? ? 3)将二维数组的有效数据存入稀疏数组。 代码实现: ? ? ? ? ? ? 1. 首先创建原始棋盘,这里任意放几颗棋子,数组元素值为0表示没有棋子,1表示白子,2表示黑子。
2. 遍历二维数组,得到非0数据的个数sum,同时创建稀疏数组SpareArr[sum+1][3]
话说回来,为什么稀疏数组的行列是sum+1和3呢? 因为稀疏数组的特点即使如此→稀疏数组有Row,Col,Value三列 第一行第一列也就是spareArr[0][0]Row存放的棋盘数组的总行数 第一行第二列也就是spareArr[0][1]Col存放的是棋盘数组的总列数 第一行第三列spareArr[0][0]value存放的是棋盘数组非0数据的个数 而从第二行开始,Row,Col和value便存放的是每个值的行数列数和值 图解在最下面 3. 将二维数组的有效数据存入稀疏数组。
这时候稀疏数组就大功告成了,输出一下 那有人要问了,如何把获得的稀疏数组还原为二维棋盘数组呢? 很简单,只需要两步 ? ? ? ? ? ? 1. 先读取稀疏数组的第一行,创建原始的二维数组 ? ? ? ? ? ? 2.再读取稀疏数组后几行数据,并赋给原二维数组。 这两步可以同时完成,代码如下
最后,附上原始二维数组和稀疏数组的对比图 ? 有什么问题欢迎在下方留言,侵删。? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/9 15:52:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |