第十二章算法与数据结构
12.1 算法的基本概念
该节知识点所占试题比重为12%,属于重点考查对象,基本上每次必考,主要考查算法的定义和对算法复杂度的理解。历次试题分值在0-4分之间波动。
12.1.1 考点1: 算法的定义
算法是对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。一般来说,一个算法具有以下5个主要特性。
有穷性:一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。
确定性:算法中的每一步都有确切的含义。
可行性:算法中的操作能够用已经实现的基本运算执行有限次来实现。
输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。
输出:一个算法有一个或者多个输出,以反映出数据加工的结果。
12.1.2 考点2:算法复杂度
算法复杂度包括时间复杂度和空间复杂度,是衡量一个算法好坏的度量。
1、时间复杂度:基本操作重复执行的次数的阶数 T(n)=o(f(n))
2、空间复杂度:是算法所需空间的度量。
G(n)= O(f(n))
例1:NXN矩阵相乘
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{c[i][j]=0;
for(k=1;k<=n;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
12.2 数据结构的定义
该节知识点所占试题比重为12%,属于重点考查对象,基本上每次必考,主要考查数据的逻辑结构和存储结构。历次试题分值在0-4分之间波动。
12.2.1考点1:什么是数据结构
一、基本概念和术语
数据(data)—所有能输入到计算机中去的描述客观事物的符号
数据元素(data element)—数据的基本单位,也称节点(node)或记录(record)
数据项(data item)—有独立含义的数据最小单位,也称域(field)
数据结构(data structure)—数据元素和数据元素关系的集合
数据的逻辑结构—只抽象反映数据元素的逻辑关系数据的存储(物理)结构—数据的逻辑结构在计算机存储器中的实现
存储结构分为:
顺序存储结构——借助元素在存储器中的相对位置来表示数据元素间的逻辑关系
链式存储结构——借助指示元素存储地址的指针表示数据元素间的逻辑关系
1536
元素2
1400
元素1
1346
元素3
∧
元素4
1345
h
存储地址
存储内容
指针
1345
元素1
1400
1346
元素4
∧
…….
……..
…….
1400
元素2
1536
…….
……..
…….
1536
元素3
1346
链式存储
h
12.2.2考点2:数据结构的图形表示
根据数据元素之间关系的不同,通常有4种结构:集合、线性结构、树型结构和图状结构。
12.3线性表
线性表一般和其他知识点结合起来出题。在每次所考的数据结构、栈、队列、链表、查找、排序等试题中,均涉及线性表的概念。
12.3.1考点1:线性表
一、线性结构特点:在数据元素的非空有限集中
存在唯一的一个被称作“第一个”的数据元素
存在唯一的一个被称作“最后一个”的数据元素
除第一个外,集合中的每个数据元素均只有一个前驱
除最后一个外,集合中的每个数据元素均只有一个后继
二、线性表的逻辑结构
定义:一个线性表是n个数据元素的有限序列
例 英文字母表(A,B,C,…..Z)是一个线性表
特征:
元素个数n—表长度,n=0空表
1
ai的直接前驱是ai-1,a1无直接前驱
ai的直接后继是ai+1,an无直接后继
12.3.2考点2:线性表的顺序存储结构
它用一组地址连续的存储单元来存储线性表的元素。
线性表中第i+1个元素的存储位置loc(ai+1)和第i个元素的存储位置loc(ai)满足以下关系:
Loc(ai+1)=loc(ai)+S其中:
S—一个元素占用的存储单元个数
LOC(ai)—线性表第i个元素的地址
特点:
实现逻辑上相邻—物理地址相邻
实现随机存取
实现:可用C语言的一维数组实现
12.3.2考点2:线性表的顺序存储结构
线性表的第i个元素的存储位置为:
Loc(ai)=loc(a1)+(i-1)×s
其中,loc(a1)表示第1个数据元素的存储位置,一般被称为线性表的基地址。
12.3.3考点3:线性表的插入和删除操作
线性表的插入操作是指在线性表的第i个元素与第i+1个元素之间插入一个新的数据元素a,使长度为n的线性表
(a1