半路上杀出个数据结构

数据结构

本来这次我安排的主角是数据库,但是我们在上期讲到数据的存取对吧。说到文件里的数据杂乱无章,不能对我们的数据进行存取。所以我们需要用到数据库。那为什么数据库可以呢?想知道答案吗?先了解数据结构。

为什么要了解数据结构

世间万事万物都有结构,比如我们人的身体是由很多细胞结构组成的,我们的房屋是由一砖一瓦组成的,那么数据也有结构吗?嗯嗯,没错,有的,即使没有结构,人们也一定会赋予它结构,以便于管理。
比如我们在手机上导航看地图,某城市或某地点都是用一个黑点来表示。某个城市到某个城市的路线是由黑线描述出来。而我们导航要去往某个地方就是求这些路线的最短路径。而这就用到了一样数据结构——图结构。
在这里插入图片描述

还有我们用Java语言写一个项目,项目下是不是有很多文件夹,文件夹下还有文件夹,还有包,再打开,可能还有包或文件夹,打开了好几层最后才打开我们的Java文件。而这用到了另外一样数据结构——树结构。
在这里插入图片描述

而我们之后要说的数据库也类似于一个文件夹,不过它下面是存放的一张张表。表就像我们的Excel表格格式一样,每一个表中都可以存储很多数据。请看下图:
在这里插入图片描述
在这张表中每一行与每一行都有次序的,那就是它们的序号,是依次递增的且唯一的。如果把每一行看作一个点,它们与他们的上一行和下一行都是有联系的。而这又是一种数据结构——表结构。

其实在我们最开始时学习Java的时候就已经在使用了数据结构,我之前在另外一篇博客提到过栈,那也是一种数据结构,那是一种线性结构,线性结构是一个有序数据元素的集合。有没有想到数组、集合。它们也有它们自己相应的数据结构,正是因为这些数据结构,我们才能那么方便的对他们进行增删改查等操作。否则你看文件,它里面存放的数据就不存在什么数据结构,你必须要对它进行对象序列化,否则你没办法对它进行存取操作。

好了,现在就开始我们数据结构之旅吧。

数据结构的一些术语及概率

在了解之前,我们先来看一些数据结构的专业用语和词汇。

1. 数据

数据是描述可观事物的数值,字符以及所有能输入到计算机中并被计算机程序处理的符号的集合。如:图像、文字、音频等等在屏幕面前展示给我们的任何信息

2. 数据元素

数据元素是数据处理的基本单位,是数据集合的个值,在计算机中通常作为一个整值进行考虑和处理。如果不清楚,可以结合我们学过的Java集合去看数据元素,通常我们的集合都是按一个对象一个对象进行存储的,对吧。所以在Java集合中,一个对象就是一个基本单位。

3. 数据项

一个数据元素是由若干个数据项组成。数据项是数据元素中不可分割的最小单位。我想你应该想到了对象的属性。

4. 数据对象

性质相同的数据元素的集合,它是数据的子集。以一张二维表为例。

学号姓名性别籍贯民族专业
101熊大湖南土家软工
102王二湖北通信
103小芳广东电商

这表里的所有数据信息就是我们指的数据对象,每一行的数据信息就是我们指的数据元素,每一个单元格的数据就是我们指的数据项。而我们下次要说的数据库,实际上就是指装这些表的文件夹。

5. 数据结构

结构是指事物之间相互联系或约束,数据结构就是指相互之间存在着某种特定关系的数据元素的集合。因此,数据结构有两个要素:一个是数据元素的集合,另一个是关系的集合。也可分为数据逻辑结构和数据物理结构(数据存储结构)。

6. 抽象数据类型

首先数据类型我们知道,数据类型通常为变量的模型,根据数据类型我们就能够知道该存放什么样的值,范围能够有多大,能够进行哪些运算操作。而抽象数据类型是指一个数字c模型以及定义在该模型上的一组操作。这个数字模型其实就是指数据元素及数据元素间的关系。

7. 数据逻辑结构

逻辑结构就是逻辑上看的结构,就是用数学模型去描述的,一般分为集合、线性、树形、图形四种.

集合

数据元素之间同属于一个集合,没有其它关系。

在这里插入图片描述

线性

数据元素之间存在一对一关系。

在这里插入图片描述

树形

数据元素之间存在一对多的关系
在这里插入图片描述

图形

数据元素之间存在多对多的关系

在这里插入图片描述

8. 数据物理结构(存储结构)

物理结构又称为存储结构,指的是在存储器中存放的方式,一般也分为顺序、链式(也叫链接)、索引、散列(也叫哈希)四类。

顺序

顺序存储结构,把逻辑单位上相邻的元素存储在物理位置相邻的存储单位中,可用数组实现。

链式

链式存储结构,对逻辑上相邻的元素不要求其物理位置相邻,用指针来表示数据元素之间的逻辑关系。如C语言的链表、Java语言的LinkedList集合。

索引

在存储所有数据元素信息的同时也建立索引表,通过索引表查找数据元素。所以索引是一种提高查询效率的数据结构。我们经常用到的ArrayList集合就是基于索引(index)的数据结构

散列(也叫哈希)

根据元素的关键字确定元素存储位置的存储方式。有没有想起能存储key-value键对值的HashMap,它们就是这种数据结构。

9.运算

所谓运算,就是对数据和数据结构的处理操作即称运算。以前我们讲过运算符,那些加减删除就是运算,同时那些我们经常说的增删改查等操作也是运算。但是我们又要考虑一个问题,对同一个运算,可能有不同的操作方法。那种方法好,那种方法效率高,这就将拓展到我们算法的领域了。

下一期博客请期待

最近的我稍稍放松了会儿,因为之前忙得喘不过气来。所以博客更新可能会迟到,但绝不会缺席。在这之前,我数据结构这块也很薄弱,但我想真的有必要补起这块知识,因为我们不知不觉就运用到了数据结构,却不自知。我们知道ArrayList集合查找效率高,但是插入、删除等操作效率低。LinkedList集合插入、删除等操作效率高,但查询效率低。现在知道了吧,就是数据结构。好了,谢幕。下一个主角是我们数据结构的配偶——算法。请期待…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值