数据结构2019年期末复习提纲
制作:纪元 - 杨怡雯- 刘一秀
本提纲遵循CC-BY-NC-SA协议
(署名-非商业性-相同方式共享)绪论
什么是算法
P20、21
算法(Algorithm):是对特定问题求解方法(步骤)的一种描述,是指令的有限序列,其中每一条指令表示一个或多个操作。不是所有的计算机程序都是算法
算法的五个特性:
① 有穷性: 一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。
② 确定性:算法中每一条指令必须有确切的含义。不存在二义性。且算法只有一个入口和一个出口。
③ 可行性: 一个算法是能行的。即算法描述的操作都可以通过已经实现的基本运算执行有限次来实现。
④ 输入: 一个算法有零个或多个输入,这些输入取自于某个特定的对象集合。
⑤ 输出: 一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。
怎么去评价一个算法
好算法标准
PPT22
① 正确性(Correctness ): 算法应满足具体问题的需求。
② 可读性(Readability): 算法应容易供人阅读和交流。可读性好的算法有助于对算法的理解和修改。
③ 健壮性(Robustness): 算法应具有容错处理。当输入非法或错误数据时,算法应能适当地作出反应
或进行处理,而不会产生莫名其妙的输出结果。
④ 通用性(Generality): 算法应具有一般性 ,即算法的处理结果对于一般的数据集合都成立。
⑤ 效率与存储量需求: 效率指的是算法执行的时间;存储量需求指算法执行过程中所需要的最大存储空间。一般地,这两者与问题的规模有关。
算法分析
时间复杂度
PPT25
定义
算法中基本操作重复执行的次数是问题规模n的某个函数,其时间量度记作 T(n)=O(f(n)),称作算法的渐近时间复杂度(Asymptotic Time complexity),简称时间复杂度。一般地,常用最深层循环内的语句中的原操作的执行频度(重复执行的次数)来表示。
表示阶
- O(1) :常量时间阶
- O (n):线性时间阶
- O(logn) :对数时间阶
- O(nlogn) :线性对数时间阶
- O (nk): k≥2 ,k次方时间阶
阶间大小关系
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)
其中指数时间的关系为:O(2n)<O(n!)<O(nn)
空间复杂度
PPT32
定义
指算法编写成程序后,在计算机中运行时所需存储空间大小的度量,记作: S(n)=O(f(n))
其中: n为问题的规模(或大小)一般地,算法的空间复杂度指的是辅助空间。
包含方面
- 指令常数变量所占用的存储空间;
- 输入数据所占用的存储空间;
- 辅助(存储)空间。
什么是数据结构
PPT9、10
数据结构(Data Structure):是指相互之间具有(存在)一定联系(关系)的数据元素的集合。元素之间的相互联系(关系)称为逻辑结构。
形式定义:数据结构是一个二元组:Data-Structure=(D,S)
其中:D是数据元素的有限集,S是D上关系的有限集。
数据结构有哪些类型
PPT9
① 集合:结构中的数据元素除了“同属于一个集合”外,没有其它关系。
② 线性结构:结构中的数据元素之间存在一对一的关系。
③ 树型结构:结构中的数据元素之间存在一对多的关系。
④ 图状结构或网状结构:结构中的数据元素之间存在多对多的关系。
基本概念、术语
PPT8
数据(Data) :是客观事物的符号表示。在计算机科学中指的是所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素(Data Element) :是数据的基本单位,在程序中通常作为一个整体来进行考虑和处理。
数据项(Data Item):是数据的不可分割的最小单位。一个数据元素可由若干个数据项组成。数据项是对客观事物某一方面特性的数据描述。
数据对象(Data Object):是性质相同的数据元素的集合,是数据的一个子集。如字符集合C={‘A’,’B’,’C,…} 。
数据类型(Data Type):指的是一个值的集合和定义在该值集上的一组操作的总称。
逻辑结构
PPT11
逻辑结构:自然或人为定义的 “关系”称为数据元素之间的逻辑关系,相应的结构称为逻辑结构。算法的设计取决于所选定的逻辑结构
存取结构
随机存取:就是直接存取,与存储位置无关,是可以通过下标直接访问的数据结构。(取数据时无需访问之前的数据,直接对第N个数据进行操作即可)
eg:数组
顺序存取:就是非随机存取,与存储位置有关,不能通过下标访问,只能按照存储顺序存取。(取第N个数据时必须访问前N-1个数据)
eg:链表
存储结构
PPT12、14
存储结构:数据元素在计算机中的存储及其逻辑关系的表现称为数据的存储结构或物理结构。而算法的实现依赖于所采用的存储结构
顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。数据元素存放的地址是连续的,在C语言中,用一维数组表示。
链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer),用该指针来表示数据元素之间的逻辑结构(关系)。数据元素存放的地址是否连续没有要求。在C语言中,用结构体类型表示。
顺序存储结构 | 链式存储结构 | |
---|---|---|
定义 | 用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系) | 在每一个数据元素中增加一个存放另一个元素地址的指针(pointer),用该指针来表示数据元素之间的逻辑结构(关系) |
存放地址连续性 | 数据元素存放的地址是连续的 | 数据元素存放的地址是否连续没有要求 |
在C语言中表示方法 | 一维数组 | 结构体类型 |
优点 | 可以直接计算节点存储地址,无需一个个查找 | ①存储密度小,相同空间能存更多数据。②逻辑上相邻的节点在物理上不一定相邻。③插入删除相比更灵活 |
缺点 | 插入、删除慢 | 查找慢(需要一个个找) |