目录
1.1 数据结构的研究内容
分析问题、提取操作对象、找出关系、求解
1.2 基本概念和术语
1.2.1 概念
1.数据(Data)
(1)能输入计算机且能被计算机处理的各种符号的集合;
(2)包括:数值型、非数值型。
2.数据元素(Data element)
(1)数据的基本单位,再计算机程序中通常作为一个整体进行考虑和处理;
(2)也称元素 or 记录、结点、顶点;
(3)一个数据元素可由若干个数据项组成。
3.数据项(Data Item)
(1)构成数据元素不可分割的最小单位。
4.数据对象(Data Object)
(1)是性质相同的数据元素的集合,是数据的一个子集。
1.2.2 数据结构(Data Structure)
1.相互之间存在一种 or 多种特定关系的数据元素集合;
2.逻辑结构、物理结构(存储结构)。
1.2.3 数据类型和抽象数据类型
1.typedef:可自定义数据类型;
2.数据类型(Data Type)
一组性质相同的值的集合以及定义于这个值集合上的一组操作的总成。
3.抽象数据类型(Abstruct Data Type ,ADT)
一个数学模型以及定义在此数学模型的一组操作。
定义格式:ADT 抽象数据类型名{
数据对象:<数据对象的定义>
数据关系:<数据关系的定义>
基本操作:<基本操作的定义>
}ADT 抽象数据类型名
1.3 抽象数据类型的表示与实现
e.g 抽象数据类型 “复数”:
typedef struct{
float realpart; //实部
float imagpart; //虚部
}Complex //定义复数抽象类型
1.4 算法和算法分析
1.算法:算法就是解决问题的方法和步骤。
2.算法特性:
(1)有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成;
(2)确定性:算法中的每一条指令必须由确切的含义,没有二义性,在任何条件下,只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出;
(3)可行性:算法是可执行的,算法描述的操作可以通过已经实现的基本操作执行有限次来实现;
(4)输入:一个算法有零个 or 多个输入;
(5)输出:一个算法有一个 or 多个输入。
3.算法设计要求:(1)正确性;(2)可读性;(3)健壮性;(4)高效性
4.算法效率:(1)时间效率:耗费时间;(事后统计、事前分析)
(2)空间效率:执行过程耗费的存储空间。
5.一般考虑算法的基本操作: T(n)= O(f(n))
算法复杂度:
时间复杂度是由嵌套最深层语句的频度决定的。
算法时间复杂度分析例题:
例题1:
例题2:
渐进空间复杂度:
例题:
S(n)= O(1) S(n)= O(n)
注:后面所有代码均为类c语言