数据结构与算法学习笔记(第一章)

配套材料:《大话数据结构》(主)、中国大学MOOC浙江大学《数据结构》(补充)

介绍

数据结构是相互之间存在一种或多种特定关系的数据元素集合

数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间关系和操作等相关问题的学科

为什么要学习数据结构?

1、解决问题方法的效率,跟数据的组织方式、空间的利用效率是直接相关的。
2、解决问题方法的效率,也跟算法的巧妙程度有关。

相关概念

一、数据:可以输入到计算机中处理的描述客观事物的符号,包括数值类型和非数值类型(即声音、图像等通过编码转化的字符数据类型)。
即我们所说的分析一个人的数据,就是指输入到计算机中处理的这个人的身高体重等数值类型符号以及声音、相貌等非数值类型符号,所有这些都属于数据。

二、数据对象:是性质相同的数据元素的集合,也是数据的子集。性质相同是指拥有相同数量和类型的数据项,通常将数据对象简称为数据。单个人并不存在性质相同的数据元素,但当以人类为数据时,性质相同的数据元素集合就组成了人类,因此将数据对象简称为数据。

三、数据元素:组成数据的,具有一定意义的基本单位,在计算机中通常作为整体处理,在不同的条件下,也可称为元素、节点、顶点、记录等。
如一个人的数据包含的数据元素有身高、体重等等。
(注:数据元素的划分是相对的,数据不同,数据元素也不同。)

四、数据项:组成数据元素的基本单位,一个元素由若干数据项构成,如人的声音这一数据元素就由响度,声调,声色等数据项构成。数据项是数据不可分割的最小单位,但数据元素才是数据结构中建立数据模型的着眼点。

五、数据结构:结构就是关系,分子有分子结构,指原子之间的排列方式,数据自然也存在数据结构,指相互之间存在一种或多种特定关系的数据元素的集合。(类比:分子由原子构成,分子结构也可以称为相互之间存在一种或多种特定关系的原子的集合)在这里插入图片描述

综上举例,学校要统计本校张三李四等学生的个人信息。其中全部学生就是数据对象即数据,张三李四等单个学生是数据元素,家庭住址、电话号码等是数据项,记录、存储方式就是数据结构,统计方式是算法。

前文提到了一种或多种特定关系,究竟是什么关系呢?往下看。

逻辑结构与物理结构

逻辑结构:数据对象中数据元素的相互关系。
一、集合结构:仅同属于一个集合,没有其他关系,各数据元素之间是平等的,与数学中的集合概念类似。
二、线性结构:数据元素是一对一的关系,如同一条线一般。
三、树形结构:数据元素之间存在一对多层次关系
四、图形结构:多对多的关系。
Note:逻辑结构针对具体问题,选用合适结构表示数据元素之间的逻辑关系。
物理结构(物理存储结构):数据的逻辑结构? 在计算机中的存储形式。
物理结构实际上就是讲如何把数据元素存储到计算机的存储器上,所以我把定义中的逻辑结构给删掉了,但这是错误的。数据的存储结构应正确反映数据间的逻辑关系,这是最为关键的,也是物理结构的重点和难点
一、顺序存储结构:把数据元素存在地址连续的存储单元中,其数据间的逻辑关系和物理关系是一致的,如数组。
二、链式存储结构:把数据元素存放在任意的存储单元里,这组存储单元也可以是连续的,也可以是不连续的。单单这样并不能反映其逻辑关系,因此需要用一个指针存放数据元素的地址。
逻辑结构是面向问题的,物理结构是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存当中。

抽象数据类型

数据类型:一组性质相同的值的集合及定义在该集合上一些操作总称

数据类型按照值的不同进行划分,如整形数据类型、实型数据类型等,用来说明该类型的变量或表达式的取值范围及所能进行的操作,有利于更高效率的利用存储空间。

数据类型可分为原子类型和结构类型,原子类型是不可再分的基本类型,包括整型、实型、字符型。结构类型由若干各类型组合而成,可再分,如整型数组。

抽象数据类型(ADT):指一个数学模型定义在该模型上的一组操作。(不依赖于具体实现,只管是什么,不管怎么做)

抽象是指抽取出事物普遍的本质,它是抽取出事物的特征而忽略非本质的细节。如在电脑、平板、手机、照相机等设备上可能都存在整形数据类型,虽然在底层的实现方式不一样,但这并不重要,其定义的数学特性相同,因此整形就是一个抽象数据类型。抽象的意义在于数据类型的数学抽象特性。

抽象数据类型可以自己定义,并不仅仅指那些已经定义并实现的数据类型。
就像马里奥一样,马里奥这个人物是数学模型,跑、跳,射击就构成了马里奥的相关操作,因此,马里奥就代表了一个抽象数据类型。

抽象数据类型体现了程序设计中问题分解、抽象、信息隐藏的特性,细分每个功能的模块,使具体的实现过程隐藏起来。
以下是描述抽象数据类型的标准格式,在以后的介绍中将会用到:
在这里插入图片描述

结语

以《大话数据结构》为主的第一章学习结束了,感觉还算简单,但据书上所说,难的部分还没开始-_-|||。本章主要介绍了数据结构学习的一些基本概念,重在理解,尽量保持一个星期一章吧,加油,哈哈*✧⁺˚⁺ପ(๑・ω・)੭ु⁾⁾

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值