数据结构-基本知识:
基本术语:
数据:
对客观事物的符号表示,在计算机科学里之所有能输入到计算机并且背其处理的符号总称,是计算机程序加工的原料,数据的含义极广,例如图像、声音、文件等都可以通过编码而归为数据的范畴。
数据元素:
是数据的基本单位,一个数据元素由若干个数据项组成,此时的数据元素通常称为记录。
数据项:
是组成数据的最小单位,不可细分。
数据对象:
性质相同的数据元素的组合,是数据的一个子集。
数据结构:
相互之间存在一种或多种特定关系的数据元素的集合,结构就是指数据元素之间的相互关系,即数据的组织形式。分为以下三个方面的内容:
逻辑结构:
数据元素之间的逻辑关系,独立于计算机。
存储结构:
数据元素及其关系在内存里面的表示,,又称数据的物理结构,或数据的存储结构。
数据的运算及实现:
对数据元素施加的操作,以及这些操作在相应存储结构上的实现。
数据的逻辑结构:
1.集合结构:数据元素之间同属一个集合
2.线性结构:数据元素之间一对一的关系,每个数据元素都由唯一的前驱和后继,除第一个和最后一个元素以外。
3.树形结构:数据元素之间一对多的关系,最上面的为根结点,最下面的为叶子结点
4.网状结构:数据元素之间多对多的关系。
数据的存储结构:
数据元素在计算机中的表达和存储方式,是逻辑结构在计算机中的实现,包含数据元素的表示和关系的表示。
依据数据元素之间的关系在计算机中不同的表示,有两种不同的存储结构:顺序存储结构(数组)、链式存储结构(链表)。
数据类型:
按照值的不同特性,高级程序语言中的数据类型分为两类:非结构的原子类型:其值不可分解、另一类为结构类型:其值由若干成分按照某种结构组合而成,可分解。
抽象数据类型:
指一个数学模型以及定义在该模型上的一组操作,其定义仅取决于他的一组逻辑特性,与在计算机内部如何表示和实现无关。
算法:
其实在python的学习里面已经提及了算法,即一系列操作按照一定顺序组成的,用于解决某项问题。
算法的特性:
1.有穷性:一个算法必须在有限步骤内结束,不能形成无穷循环
2.确定性:算法中的每一个步骤都要有明确的含义,不能有二义性
3.可行性:算法中的每个步骤都应当可以有效执行,并得到确切结果
4.输入:包含零个或多个输入
5.输出:包含至少一个输出
算法的基本特性是:有穷性、确定性以及可行性。
算法的描述方式:
自然语言、流程图、伪代码、程序设计语言
算法设计的要求:
确保算法的正确性、可读性、稳健性、高效性、内存利用低。
算法性能分析:时间复杂度和空间复杂度
1.时间复杂度:该算法的运行时间与问题规模的对应关系:T(n)=O(f(n))
n为问题规模,T(n)表示语句执行次数;f(n)为辅助函数;O(f(n))表示f(n)是T(n)的同数量级函数。
2.空间复杂度:从开始到结束所需的存储空间:S(n)=O(f(n))