什么是数据结构?

王君效
• 阅读 1677

本篇文章主要来介绍什么是数据结构。

首先让我们来看一张图片:

什么是数据结构?

数据存储于计算机的内存中。内存如上图所示,形似排成 1 列的箱子,1 个箱子里存储 1 个数据。

数据存储于内存时,决定了数据顺序和位置关系的便是数据结构

其实在我们生活中用到很多数据结构的知识,那么举一个我们生活中的栗子:

首先举一个从上往下顺序添加举个简单的例子。假设我们有1个电话簿——虽说现在很多人都把电话号码存在手机里,但是这里我们考虑使用纸质电话簿的情况——每当我们得到了新的电话号码,就按从上往下的顺序把它们记在电话簿上。

什么是数据结构?

假设此时我们想给张飞打电话,但是因为数据都是按获取顺序排列的,所以我们并不知道张飞的号码具体在哪里,只能从头一个个往下找(虽说也可以从后往前找或者随机查找,但是效率并不会比从上往下找高)。如果电话簿上号码不多的话很快就能找到,但如果存了500个号码,找起来就不那么容易了。

再比如我们可以按姓名的拼音顺序对电话簿进行排列,接下来,试试以联系人姓名的拼音顺序排列吧。因为数据都是以字典顺序排列的,所以它们是有结构的。

什么是数据结构?

使用这种方式给联系人排序的话,想要找到目标人物就轻松多了。通过姓名的拼音首字母就能推测出该数据的大致位置。

那么,如何往这个按拼音顺序排列的电话簿里添加数据呢?假设我们认识了新朋友柯南并拿到了他的电话号码,打算把号码记到电话簿中。由于数据按姓名的拼音顺序排列,所以柯南必须写在韩宏宇和李希之间,但是上面的这张表里已经没有空位可供填写,所以需要把李希及其以下的数据往下移1行。

此时我们需要从下往上执行将本行的内容写进下一行,然后清除本行内容的操作。如果一共有500个数据,一次操作需要10秒,那么1个小时也完成不了这项工作。

总的来说,数据按获取顺序排列的话,虽然添加数据非常简单,只需要把数据加在最后就可以了,但是在查询时较为麻烦;以拼音顺序来排列的话,虽然在查询上较为简单,但是添加数据时又会比较麻烦。

虽说这两种方法各有各的优缺点,但具体选择哪种还是要取决于这个电话簿的用法。如果电话簿做好之后就不再添加新号码,那么选择后者更为合适;如果需要经常添加新号码,但不怎么需要再查询,就应该选择前者。

我们还可以考虑一种新的排列方法,将二者的优点结合起来。那就是分别使用不同的表存储不同的拼音首字母,比如表L、表M、表N等,然后将同一张表中的数据按获取顺序进行排列。

什么是数据结构?

什么是数据结构?

什么是数据结构?

这样一来,在添加新数据时,直接将数据加入到相应表中的末尾就可以了,而查询数据时,也只需要到其对应的表中去查找即可。

因为各个表中存储的数据依旧是没有规律的,所以查询时仍需从表头开始找起,但比查询整个电话簿来说还是要轻松多了。

数据结构方面的思路也和制作电话簿时的一样。将数据存储于内存时,根据使用目的选择合适的数据结构,可以提高内存的利用率

到这里,我相信你对数据结构有了一定的了解,下一篇我们将对数据结构中最常用的-链表进行讲解。

参考

《我的第一本算法书》

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Wesley13 Wesley13
3年前
java基础(二):谈谈Java基本数据结构
数据结构是计算机存储,组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或存储效率。数据结构往往同高效的检索算法和索引技术有关java中常见的几种数据结构(也是初级工程师常见面试题)主要是一些常见的容器,它们主要来自于Collection和Map这2个集合;以下是2个集合的总体框架
Wesley13 Wesley13
3年前
java数据结构与算法之数组篇
数据结构和算法的概述数据结构对计算机内存中的数据的一种安排。常见数据结构数据结构优点缺点数组插
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
mysql面试题
MySQL面试索引相关1.什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找.1.索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关,在MySQL中使用较多的索引有Hash索引,B树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B树索引.
Stella981 Stella981
3年前
B+Tree索引为什么可以支持千万级别数据量的查找——讲讲mysql索引的底层数据结构
MySQL索引底层数据结构索引是存储引擎快速找到记录的一种数据结构一、有索引与没索引的差距先来看一张图:!(https://static.oschina.net/uploads/img/202010/14150116_INlJ.png)左边是没有索引的情况,右边是作为
王君效
王君效
Lv1
我很难说清楚是什么阻止了我回头找你的冲动
文章
4
粉丝
0
获赞
0