`
第 1 章 数据结构与算法
§1.1 算法的复杂度
1. 算法的基本概念
①.算法:即解题方案的准确而完整的描述【注意:算法不等于程序,也不等于计算方法,通常,程序的编制不
可能优于算法的设计】
②.利用计算机算法为计算机解题的过程实际上是在实施某种算法。
(1)算法的基本特征
算法一般具有 4 个基本特征:可行性、确定性、有穷性(包括精度要求确定的计算过程和合理的执行时间的含义)、
拥有足够的情报。
(2 )算法的基本要素
①.对数据对象的运算和操作
计算机算法就是计算机能处理的操作所组成的指令序列。通常,计算机可以执行的基本操作是以指令的形式描述
的,一个计算机系统能执行的所有指令的集合称为该计算机系统的指令系统。其中基本的运算和操作包括:算术
运算、逻辑运算、关系运算、数据传输(赋值、输入、输出等)。
②.控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
ⅰ.描述算法的工具通常有:传统流程图、N—S 结构化流程图、算法描述语言。
ⅱ.一个算法的 3 种基本控制结构:顺序结构、选择结构、循环结构。
(3 )算法基本设计方法
算法基本设计方法:列举法、归纳法、递推(逐成分解)、递归、减半递推技术、回溯法。
2. 算法复杂度
算法复杂度包括时间复杂度和空间复杂度。注意两者的区别,不要混淆,见表 1-1
§1.2 数据结构
1.2.1 逻辑结构和存储结构
1. 数据结构的基本概念
(1)数据结构:指相互有关联的数据元素的集合。
(2 )数据处理:指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算、也包括对
数据元素进行分析。
(3 )数据结构研究的3 个方面
①.数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
②.在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
③.对各种数据结构进行的运算。
2. 数据的逻辑结构
数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关
系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为 D;二是 D 上的关系,它反映了数据元
素之间的前后件关系,通常记为 R。一个数据结构可以表示成:B=(D,R)
其中,B 表示数据结构。为了反映 D 中各数据元素之间的前后件关系,一般用二元组来表示。在数据处理领域中,
通常把数据元素之间的这种固有的关系简单地用前后件关系(或直接前驱或直接后继关系)来描述。例如,假设 a
与 b 是 D 中的;两个数据,则二元组(a,b)表示a 是 b 的前件,b 是 a 的后件
例如,如果把一年四季看作一个数据结构,则可表示成:B =(D,R)
D ={春季,夏季,秋季,冬季}
R ={(春季,夏季),(夏季,秋季),(秋季,冬季)}
第 1 页 共 25 页
3. 数据的存储结构
数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。
由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的
各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放
各数据元素之间的前后件关系的信息。
一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等存储结构。
顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间
的关系由存储单元的邻接关系来体现。
链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。
1.2.2 数据结构的图形表示
一个数据结构除了用二元关系表示外,还可以直观地用图形表示。在数据结构的图形表示中,对于数据集合 D 中
的每一个数据元素用中间标有元素值的方框表示,一般称为数据结点,并简称为结点;为了进一步表示各数据元
素之间的前后件关系,对于关系 R 中的每一个二元组,用一条有向线段从前件结点指向后向结点。
例如,一年四季的数据结构可以用如图的图形表示 父亲