1、数据结构的研究内容
-
数据结构主要研究的问题:
如何合理地组织、高效地处理数据。 -
数据结构研究的内容为:
研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。
2、基本概念和术语
- 数据:是客观事物的符号表示,所有能输入到计算机且能被计算机处理的各种符号的集合。如整数、图像等。
- 数据元素:是数据的基本单位,通常把数据元素作为一个整体进行考虑和处理。如一名学生的信息记录。
- 数据项:是组成数据的、有独立含义的、不可分割的最小单位。如学生的学号、姓名、性别等都是数据项。
- 数据对象:是性质相同的数据元素的集合,是数据的一个子集。如整数数据对象,学生数据对象。
数据≥数据对象>数据元素>数据项
(学生表≥性质相同的学生信息>学生信息>学生具体信息)
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。
-
逻辑结构
数据元素之间抽象化的相互关系,与数据的存储无关,独立于计算机,它是从具体问题抽象出来的数学模型。
-
存储结构
数据元素及其关系在计算机存储器中的存储方式。-
顺序存储结构:顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
-
链式存储结构:顺序存储结构要求所有的元素依次存放在一片连续的存储空间中, 而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系, 需要给每个结点附加指针字段,用千存放后继元素的存储地址。所以链式存储结构通常借助于程序设计语言的指针类型来描述。
-
数据类型: 在一种抽象设计语言中,变量所具有的数据种类。如C语言中的数组,结构体。
抽象数据类型: 抽象就是抽取出实际问题的本质。抽象数据类型(Abstract Data Type, ADT) 一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
3、算法和算法分析
算法是为了解决某类问题而规定的一个有限长的操作序列。
算法的特性:
- 有穷性
- 确定性
- 可行性
- 输入
- 输出
评价算法优劣的基本标准:
- 正确性
- 可读性
- 健壮性
- 高效性
时间复杂度
一般情况下, 算法中基本语句重复执行的次数是问题规模n的某个函数j(n), 算法的时间量度记作 T(n)= O(f{n)) 它表示随问题规模n的增大,算法执行时间的增长率 和 j(n的) 增长率相同, 称做算法的渐近时间复杂度, 简称时间复杂度。(TimeComplexity)。常见时间复杂度耗费时间从小到大是:
O(1)<O(logn)<O(n)<O(nlogn)<O(n2) <O(n3)<O(2n) <O(n!)<O(nn)
空间复杂度
是度量算法所需存储空间的大小(算法的空间复杂度并不是计算实际占用的空间,而是计算整个算法的辅助空间单元的个数)记做S(n)=O(f(n))。
时间复杂度例题: