基本概念
要求掌握
- 数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序识别和处理的符号的总称。
- 数据元素:是数据的基本单位。通常作为一个整体进行考虑和处理。
- 数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。
- 数据对象:是性质相同的数据元素的集合,是数据的一个子集。
- 数据结构:是一门研究非数值计算程序设计中操作对象,以及这些对象之间的关系和操作的学科。
- 逻辑结构:是从具体问题抽象出来的数学模型,从逻辑关系上描述数据,它与数据的存储无关。根据元素之间关系的不同特性,通常有四类基本逻辑结构:集合结构、线性结构、树形结构和图状结构(网状结构)
- 存储结构:逻辑结构再计算机中的存储表示。有两类存储结构:顺序存储结构和链式存储结构。
- 抽象数据类型(ADT):是由用户定义的、表示应用问题的数据模型,以及定义在这个模型上的一组操作的总称。具体包括三个部分:数据对象、数据对象上关系的集合、以及对数据对象的基本操作的集合。
- 算法:是为了解决某类问题而规定的一个有限长的操作序列。五个特性:有穷性、确定性、可行性、输入和输出。一个算法的优劣应该从以下四个方面来评价:正确性、可读性、健壮性、高效性。
重点掌握
数据结构所含两个层次的具体含义及其相互关系
数据的逻辑结构和存储结构
- 同一逻辑结构采用不同的存储方式,可以得到不同的存储结构。
举例
有一张学生基本信息表,包括学生的学号、姓名、性别、籍贯、专业等。
每个学生基本信息记录对应一个数据元素,学生记录按顺序号排列,形成了学生基本信息记录的线性序列。
对于整个表来说,只有一个开始结点(它的前面无记录)和一个终端结点(它的后面无记录),其他的结点则各有一个也只有一个直接前驱和直接后继。
学生记录之间的这种关系就确定了学生表的逻辑结构,即线性结构。
这些学生记录在计算机中的存储表示就是存储结构。如果用连续的存储单元(如用数组表示)来存放这些记录,则成为顺序存储结构;如果存储单元不连续,而是随机存放各个记录,然后用指针进行连接,则成为链式存储结构。
时间复杂度的分析方法
- 找到一个基本操作(最深层循环)
- 分析该基本操作的执行次数x与问题规模n的关系 x=f(n)
- x的数量级O(x)就是算法时间复杂度T(n)
常见的渐进时间复杂度
O(1) < O(log₂n) < O(n) < O(nlog₂n) < O(n²) < O(n³) < O(2ⁿ) < O(n!) < O(nⁿ)
经典例题
1.与数据元素本身对的形式、内容、相对位置、个数无关的是数据的(C)
A.存储结构 B.存储实现 C.逻辑结构 D.运算实现
2.通常要求统一逻辑结构中的所有数据元素具有相同的特性,这意味着(B)
A. 数据具有统一特点
B. 不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致
C. 每个数据元素都一样
D. 数据元素所包含的数据项的个数相等
3.可以用(D)定义一个完整的数据结构
A. 数据元素 B. 数据对象 C. 数据关系 D. 抽象数据类型
4. 以下属于逻辑结构的是(C)
A. 顺序表 B. 哈希表 C. 有序表 D. 单链表
解释:
顺序表、哈希表和单链表是三种不同的数据结构,既描述逻辑结构,又描述存储结构和数据运算。
有序表是指关键字有序的线性表,仅描述元素之间的逻辑关系,它既可以链式存储,有可以顺序存储,所以属于逻辑结构。
5. 一个算法应该是(B)
A. 程序 B. 问题求解步骤的描述 C. 要满足五个基本特性 D.A和C
解释:
程序不一定满足有穷性,如死循环、操作系统等,而算法必须有穷。
算法代表对问题求解步骤的描述,而程序则是算法在计算机上的特定实现。
· 易错点:C只是算法的表要条件,不能成为算法的定义。
6.试分析下列算法的时间复杂度
1) O(m*n)
for(i = 0;i < n;i++)
for(j = 0;j < m;j++)
a[i][]j = 0;
2) O(long₃n)
i = 1;
while(i <= n)
i = i * 3;
3) O(√n)
x = n; //n > 1
y = 0;
while(x >= (y + 1) * (y + 1))
y++;