数据结构基础概念和术语

数据结构(C语言版)(第2版)
严蔚敏 李冬梅 吴伟民

重要概念

绪论

1.数据:客观事物的符号表示,是所有能够输入到计算机并处理的符号总称。
2.数据元素:数据的基本单位
3.如何合理地组织数据、高效地处理数据,这就是“数据结构”主要研究的问题。
4.数据结构(Data Structure):相互之间存在一种或多种特定关系的数据元素的集合。
5. 结构:就是指数据元素之间存在的关系。
6.数据结构包括逻辑结构和存储结构两个层次。

符号数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。数据的逻辑结构有两个要素:一是数据元素;二是关系。
(1)集合结构:数据元素之间除了“属于同一集合”的关系外,别无其他关系。
(2)线性结构:数据元素之间存在一对一的关系。
(3)树结构:数据元素之间存在一对多的关系。
(4)图结构或网状结构:数据元素之间存在多对多的关系。
在这里插入图片描述
数据对象在计算机中的存储表示称为数据的存储结构,也称为物理结构。元素在计算机中有两种基本的存储结构,分别是顺序存储结构和链式存储结构。
(1)顺序存储结构是借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系,通常借助程序设计语言的数组类型来描述。
(2)顺序存储结构要求所有的元素依次存放在一片连续的存储空间中,而链式存储结构,无需占用一整块存储空间。但为了表示结点之间的关系,需要给每个结点附加指针字段,用于存放后继元素的存储地址。

7.数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型(Abstract Data Type,ADT)一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
抽象数据类型和类的概念实际上反映了程序或软件设计的两层抽象:抽象数据类型相当于在概念层(或称为抽象层)上描述问题,而类相当于在实现层(通过操作类的对象)上描述问题。

8.算法(Algorithm)是为了解决某类问题而规定的一个有限长的操作序列。

算法必须满足以下五个重要特性。
(1)有穷性。一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。
(2)确定性。对于每种情况下所应执行的操作,在算法中都有确切的规定,不会产生二义性,使算法的执行者或阅读者都能明确其含义及如何执行。
(3)可行性。算法中的所有操作都可以通过已经实现的基本操作运算执行有限次来实现。
(4)输入。一个算法有零个或多个输入。当用函数描述算法时,输入往往是通过形参表示的,在它们被调用时,从主调函数获得输入值。
(5)输出。一个算法有一个或多个输出,它们是算法进行信息加工后得到的结果,无输出的算法没有任何意义。当用函数描述算法时,输出多用返回值或引用类型的形参表示。

9.衡量算法效率的方法主要有两类:事后统计法和事前分析估算法。事后统计法需要先将算法实现,然后测算其时间和空间开销。这种方法的缺陷很显然,一是必须把算法转换成可执行的程序,二是时空开销的测算结果依赖于计算机的软硬件等环境因素,这容易掩盖算法本身的优劣。所以我们通常采用事前分析估算法,通过计算算法的渐近复杂度来衡量算法的效率。
10. 一般情况下,算法中基本语句重复执行的次数是问题规模n的某个函数f(n),算法的时间量度记作
T(n)=O(f(n))。
它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称做算法的渐近时间复杂度,简称时间复杂度(Time Complexity)。

(1)问题规模是算法求解问题输入量的多少,是问题大小的本质表示,一般用整数n表示。
(2)一条语句的重复执行次数称作语句频度(Frequency Count)
(3)分析算法时间复杂度的基本方法为:找出所有语句中语句频度最大的那条语句作为基本语句,计算基本语句的频度得到问题规模n的某个函数f(n),取其数量级用符号“O”表示即可。
(4) 常见的时间复杂度按数量级递增排列依次为:常量阶O(1)、对数阶O(log2n)、线性阶O(n)、线性对数阶O(nlog2n)、平方阶O(n2)、立方阶O(n3)、……、k次方阶O(nk)、指数阶O(2n)等。
(5)一般情况下,随着n的增大,T(n)的增长较慢的算法为较优的算法。
(6)算法在最好情况下的时间复杂度为最好时间复杂度,指的是算法计算量可能达到的最小值;称算法在最坏情况下的时间复杂度为最坏时间复杂度,指的是算法计算量可能达到的最大值;算法的平均时间复杂度是指算法在所有可能情况下,按照输入实例以等概率出现时,算法计算量的加权平均值。

11.关于算法的存储空间需求,类似于算法的时间复杂度,我们采用渐近空间复杂度(Space Complexity)作为算法所需存储空间的量度,简称空间复杂度

(1) S(n)=O(f (n))
一般情况下,一个程序在机器上执行时,除了需要寄存本身所用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的辅助存储空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值