一,数据结构概述
(一)什么是数据结构
数据是指所有能够输入到计算机中存储并被计算机程序处理的符号的集合。
数据元素是数据的基本单位。
- 如果以学号、 性别和姓名来标识某个学生, 那么由学号、 性别和姓名组成的学生记录将构成一个数据元素。
数据项是构成数据元素的不可分割的最小单位。
- 比如学生记录中的学号、 性别或姓名,每一项就是一个数据项。
数据对象是性质相同的数据元素的集合, 是数据的一个子集。
数据结构是相互之间存在一种或多种特定关系的数据元素的集合。这些数据间的关联关系就是结构,数据结构通常包括数据的逻辑结构和存储结构两个层次。
(二)数据的逻辑结构
数据的逻辑结构是从数据元素的逻辑关系上抽象描述数据,可以被看作是从具体问题中抽象出来的数学模型。
根据数据元素之间的不同关系特性, 通常可将数据逻辑结构分为线性结构、集合、树形结构和图状结构。
1,集合:
该结构中的数据元素除了属于同一集合以外, 两两之间并无其他关系。
2,线性结构
该结构中的数据元素之间存在一对多的逻辑关系。
3,树形结构
该结构中的数据元素之间存在一对多的逻辑关系。
4,图状结构
该结构中的数据元素之间存在多对多的逻辑关系。
(三)数据的存储结构
数据的存储结构(又称物理结构)是指数据在计算机中的表示方法, 是数据的逻辑结构在计算机中的存储实现, 因此在存储时应包含数据元素本身及数据元素之间的关系。
1,顺序存储结构
顺序存储结构采用一组物理上连续的存储单元来依次存放所有的数据元素。因为逻辑上相邻地两个数据元素的存储地址也相邻,所以它们的关系可以由存储单元地址间的关系来间接表示。
2,链式存储结构
链式存储结构用一个结点(存储这些结点的空间不一定连续)来存储一个数据元素,用附加到结点的指针来表示数据元素之间的关系。
3,索引存储结构
索引存储结构在存储所有数据元素之后,还需要建立附加的索引表来标识唯一的数据元素。
4,哈希存储结构
哈希(或散列) 存储结构根据结点的关键字来使用事先设计好的哈希(或散列) 函数计算出数据元素结点的存储地址。
二,数据类型概述
(一)python基本数据类型
数据类型是指一组值的集合及定义在这组值上的一组操作的总称。
由于python是一种强类型、动态类型的语言,其变量不需要声明,但变量在使用前必须被赋值后才会被创建和使用, 创建后变量将有具体的数据类型。
python中常用的一些内置的数据类型:数字(Number)数据类型、字符串(String )数据类型、列表(List)数据类型、元组(Tuple ) 数据类型、集合(Set)数据类型、字典(Dict)数据类型.
(二)抽象数据类型
抽象数据类型(Abstract Data Type, ADT)是指一个数学模型及定义在该模型上的一组操作。 具体包括数据对象、 数据对象上关系的集合, 以及对数据对象的基本操作的集合。
ADT结构表示如下: 其中基本操作表示如下: 一个较完整的示例: 我们将通过python中的委托机制对内置的数据类型进行扩展,从而实现定制化的数据结构。
三,算法概述
(一)什么是算法
算法是对待特定问题求解步骤的一种描述, 它是指令的有限序列。
- 算法和程序是不同的, 程序是指使用某种计算机语言对一个算法的具体实现, 即程序描述了具体怎么做, 而算法侧重于描述解决问题的方法。
1,算法的5个重要特性
- 有穷性: 一个算法对于任何合法的输入必须在执行有穷步之后结束, 且每一步都可在有穷的时间内完成。
- 确定性: 算法中每一条指令都必须具有确切的含义, 不能有二义性, 并且在任何条件下,算法的任意一条执行路径都是惟一的, 即对于相同的输入所得的输出相同。
- 可行性: 一个算法是可行的, 是指算法中描述的操作都可以通过基本运算执行有限次操作来实现。
- 输入: 一个算法有零个或多个输入, 这些输入取自于某个特定对象的集合。
- 输出: 一个算法有零个或多个输出, 这些输出是同输入有着某些特定关系的量
2,算法的5个衡量标准
- 正确性: 要求算法能够正确地执行, 并满足预先设定的功能和性能要求。
- 可读性: 一个算法的可读性好才便于人们理解, 人们才有可能对程序进行调试, 并从中找出错误。
- 健壮性: 当输入的数据不合法或运行环境改变时, 算法能恰当地做出反应或进行处理。
- 时间复杂度: 对一个算法执行时间效率的度量。
- 空间复杂度: 对一个算法在执行过程中所占用的存储空间的度量。
(二)算法的时间复杂度
算法的执行时间是通过依据该算法编写的程序在计算机上执行时所需要的时间来计算的,具体可以参考下面两篇:
算法时间复杂度分析,算法—时间复杂度
(三)算法的空间复杂度
算法的空间复杂度一般也认为是问题规模 n 的函数。在对算法的空间复杂度进行研究时, 只分析临时变量所占用的存储空间。
第16话:算法的空间复杂度,算法分析中的空间复杂度
|