查看: 125|回复: 0

什么是数据结构?

[复制链接]
发表于 2020-2-16 10:58:49 | 显示全部楼层 |阅读模式
本篇文章重要来先容什么是数据布局。
起首让我们来看一张图片:

数据存储于盘算机的内存中。内存如上图所示,形似排成 1 列的箱子,1 个箱子里存储 1 个数据。
数据存储于内存时,决定了数据顺序和位置关系的便是数据布局
其着实我们生活中用到很多数据布局的知识,那么举一个我们生活中的栗子:
起首举一个从上往下顺序添加举个简单的例子。假设我们有1个电话簿——虽说现在很多人都把电话号码存在手机里,但是这里我们考虑使用纸质电话簿的情况——每当我们得到了新的电话号码,就按从上往下的顺序把它们记在电话簿上。

假设此时我们想给张飞打电话,但是因为数据都是按获取顺序分列的,所以我们并不知道张飞的号码具体在那里,只能从头一个个往下找(虽说也可以从后往前找或者随机查找,但是效率并不会比从上往下找高)。如果电话簿上号码不多的话很快就能找到,但如果存了500个号码,找起来就不那么容易了。
再比如我们可以按姓名的拼音顺序对电话簿举行分列,接下来,试试以联系人姓名的拼音顺序分列吧。因为数据都是以字典顺序分列的,所以它们是有布局的。

使用这种方式给联系人排序的话,想要找到目标人物就轻松多了。通过姓名的拼音首字母就能推测出该数据的大抵位置。
那么,如何往这个按拼音顺序分列的电话簿里添加数据呢?假设我们认识了新朋友柯南并拿到了他的电话号码,打算把号码记到电话簿中。由于数据按姓名的拼音顺序分列,所以柯南必须写在韩宏宇和李希之间,但是上面的这张表里已经没有空位可供填写,所以必要把李希及其以下的数据往下移1行。
此时我们必要从下往上执行将本行的内容写进下一行,然后清除本行内容的操作。如果一共有500个数据,一次操作必要10秒,那么1个小时也完成不了这项工作。
总的来说,数据按获取顺序分列的话,虽然添加数据非常简单,只必要把数据加在最后就可以了,但是在查询时较为麻烦;以拼音顺序来分列的话,虽然在查询上较为简单,但是添加数据时又会比力麻烦。
虽说这两种方法各有各的优缺点,但具体选择哪种照旧要取决于这个电话簿的用法。如果电话簿做好之后就不再添加新号码,那么选择后者更为合适;如果必要经常添加新号码,但不怎么必要再查询,就应该选择前者。
我们还可以考虑一种新的分列方法,将二者的优点结合起来。那就是分别使用差别的表存储差别的拼音首字母,比如表L、表M、表N等,然后将同一张表中的数据按获取顺序举行分列。



这样一来,在添加新数据时,直接将数据加入到相应表中的末端就可以了,而查询数据时,也只必要到其对应的表中去查找即可。
因为各个表中存储的数据依旧是没有规律的,所以查询时仍需从表头开始找起,但比查询整个电话簿来说照旧要轻松多了。
数据布局方面的思路也和制作电话簿时的一样。将数据存储于内存时,根据使用目的选择合适的数据布局,可以进步内存的使用率
到这里,我相信你对数据布局有了一定的了解,下一篇我们将对数据布局中最常用的-链表举行讲解。
参考
《我的第一本算法书》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?用户注册

x

天涯海角也要找到Ni:什么是数据结构?

中发现Ni: 什么是数据结构?
中发现Ni: 什么是数据结构?
中发现Ni: 什么是数据结构?
中发现Ni: 什么是数据结构?
中发现Ni: 什么是数据结构?
中发现Ni: 什么是数据结构?
相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表