考研笔记 | 数据结构 §1. 数据结构
算法具备:可执行性、确定性、有穷性(输入、输出)。
数据项是构成数据元素的最小单位。
数据结构:逻辑结构、存储结构、数据的运算。
逻辑结构:集合、线性结构、树型结构、图或网状结构。
线性结构:线性表、栈与队列、串、数组。
存储结构:顺序存储、链接存储,索引存储、散列存储(如,hash)。
逻辑结构指数据的组织形式数据间的逻辑关系。
数据结构是一门研究在非数值计算的程序设计问题中计算机的操作对象及对象间的关系和施加于对象的操作等学科。
数据类型是一个值的集合和一组定义在此集合上的操作的总称。
抽象数据类型(ADT)是指一个数学模型以及定义在该模型上妹子操作。 其定义仅取决于它的一组逻辑特定,与其在计算机内部如何表示和实现无关系,不论内部结构如何变化,只要其数学特性不变,都不影响其外部的使用。
相同与区别:二者实质上是一个概念。 抽象数据类型的范围更广,它已不在局限于机器已定义和实现的数据类型,还包括用户在设计软件时自行定义的数据类型。
使用抽象数据类型的好处:使用抽象数据类型定义的软件、模块含定义、表示与实现三个部分,封装在一起对用户透明(提供接口),而不必了解实现细节。其使程序设计不再是 “艺术”,而是像 “科学” 迈进了一步。
数据的逻辑结构与存储结构无关。运算定义在逻辑结构上依赖于存储结构实现。
逻辑结构相同,但存储结构不同。如,线性表:顺序表、线性链表。
逻辑结构不同,但存储结构相同。如,栈与队列。
数据结构的评价很复杂
所选数据是否正确、完整地刻画了问题基本特征;
是否容易实现。
算法评价:正确性、易读性、健壮性、时空效率(运行)。
算法的时间复杂性:算法输入规模的函数。 算法的输入规模或问题的规模是作为该算法输入的数据所含数据元素的数目,且与此数目有关的其他参数。有时考虑算法最坏情况下的时间复杂度或平均时间复杂度。
算法:对特定问题求解步骤的描述,是指令的有限序列,其中每一条指令表示一个或多个操作。
频度:该语句在算法中重复执行的次数 $O (1)<O (\log_2n)<O (n)<O (n\log_2n)<O (n^2)<O (n^2)<O (2^n)<O (n!)<O (n^n)$