简述
数组是我们最常用也是最基础一种数据结构之一,它是一种有序的元素序列。常见的数组有一维数组,二维数组…N维数组。而今天的主角是数组中不常见的——稀疏数组
稀疏数组基本理解
稀疏数组主要是为了节省存储空间、避免内存浪费而设计的,比如:声明一个int类型12*12的二维数组,并随机赋值如下图:
标红部分就是随机赋值。但是我们能看到整个矩阵结构中有大量的0,意味着这些坐标都没有数据。当我们要对这份数组进行存储或者备份时,就会存储大量无用的数据,造成资源浪费。而事实上有用的数据只有三个。于是我们引了稀疏数组。下图是一个二维数组转成稀疏数组的示意图:
看到这里相信很多人还是有点蒙圈,但是唯一可以确定的是,整个数据量是不是变小了。接下来才是重点~~~~
转换逻辑
- 稀疏数组的第一行的值是固定,用来记录原二维数组的基本大小以及一共有多少个值。比如上图中的 12 12 3 表示的是记录了原二维数组是一个12行12列且一共有3个值的数组。
- 从第二行开始,我们要记录每个值所在的位置。比如 1 2 2 表示的是在原二维数组中的第二行第三列有个值为2的数据(数组下标从0开始,所以1标识第二行,列也一样)
- 稀疏数组转成二维数组的方式也很简单:先读取稀疏数组的第一行,得到二维数组的大小。然后逐行读取到对应的值以及值的坐标,按坐标赋值即可
- 就是这么简单~!
使用场景
二维数组与稀疏数组的结合使用,最经典的场景就是:围棋和五子棋。多用于悔棋、保存棋局等场景。总的来说,就是需要精简存储的使用场景
核心代码
稀疏数组转二维数组
感谢您的收看与支持~
感谢这么优秀的你还愿意为我点赞~
感谢这么优秀的你还愿意帮我转发~
今天的文章数据结构-你是否也听过稀疏数组?分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7925.html