绪论

这一章要解决三个问题:数据结构讨论的范畴、基本概念、算法和它的量度

1.1 数据结构讨论的范畴

数据结构是和程序设计密切相关的课程。

Niklaus Wirth
Algorithm + Data Structures = Programs

数据结构和算法是进行程序设计两大问题。
程序设计为计算机处理问题编制一组指令集。
算法处理问题的策略。
数据结构问题的数学模型。

例子:数值计算的程序设计问题(比如结构静力分析计算——线性代数方程组、全球天气预报——环流模式方程);非数值计算的程序设计问题(比如求一组整数中的最大值、计算机对弈、足协的数据库管理)。

总结:数据结构描述现实世界实体的数学模型(非数值计算)及其上的操作在计算机中的表示和实现。

 


 

1.2 基本概念

一、数据与数据结构

Date(所有能被输入到计算机中,且被计算机处理的符号的集、计算机操作的对象的总称、计算机信息的载体、是计算机处理的信息的某种特定的符号表示形式)。

Date Element(数据中的一个“个体”,数据结构中讨论的基本单位);Date Item(数据结构中讨论的最小单位)。比如,一个运行员的信息包括(姓名、俱乐部、出生日期、参加日期、职务、业绩),其中出生日期(年、月、日)称之为组合项。

DS(带结构的Date Element的集合),它的逻辑关系有四种(线性结构、集合结构、树形结构、图形结构)。

DS的形式定义:数据结构是一个二元组,Data_Structures = (D, S) ,其中:D 数据元素的有限集SD关系的有限集。

严格地讲,以上定义仅是数据的逻辑结构的定义,数据的存储结构——逻辑结构在存储器中的映象。

关系的映象方法分为两类,顺序映象(以存储位置的相邻表示后继关系,整个存储结构中只含数据元素本身的信息);链式映象(以附加信息(指针)表示后继关系)。

二、数据类型

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

在用高级程序语言编写的程序中,必须对程序中出现的每个变量、常量或表达式,明确说明它们所属的数据类型。因为类型明显或隐含地规定了,在程序执行期间,变量或表达式所有可能取值的范围,以及在这些之上允许进行的操作。

三、ADT

ADT是指一个数学模型以及定义在此数学模型上的一组操作。

ADT有两个重要特征:数据抽象(用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法));数据封装(将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节)。

ADT的描述方法:抽象数据类型可用(DSP)三元组表示其中,D是数据对象,SD上的关系集,P是对D的基本操作集。

 ADT 抽象数据类型名 {
数据对象:〈数据对象的定义〉
数据关系:〈数据关系的定义〉
基本操作:〈基本操作的定义〉
}
ADT 抽象数据类型名
其中,数据对象和数据关系的定义用伪码描述,基本操作的定义格式为
基本操作名(参数表)
初始条件:〈初始条件描述〉
操作结果:〈操作结果描述〉
基本操作有两种参数:赋值参数只为操作提供输入值;引用参数以&打头, 除可提供输入值外,还将返回操作结果。
初始条件”描述了操作执行之前数据结构和参数应满足的条件,若不满足,则操作失败,并返回相应出错信息。
操作结果”说明了操作正常完成之后,数据结构的变化状况和应返回的结果。若初始条件为空,则省略之。
抽象数据类型的表示和实现
抽象数据类型需要通过固有数据类型(高级编程语言中已实现的数据类型)来实现。

 


 1.3 算法和算法的衡量

一、算法

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

算法有五个重要的特征:(有穷性、确定性、可行性、有输入、有输出)

二、算法设计的原则

正确性、可读性、健壮性、高效率与低存储量方法和准则。

三、算法效率的衡量方法和准则

事后统计法:缺点(必须执行程序;其它因素掩盖算法本质)

事前分析估算法:它的相关因素(算法选用的策略、问题的规模、编写程序的语言、编绎程序产生机器代码的质量、计算机执行指令的速度)。

一个特定算法的“运行工作量”的大小,只依赖于问题的规模(通常用整数量n表示),或者说,它是问题规模的函数。

随着问题规模n的增长,算法执行时间的增长率和f(n)的增长率相同,则可记作:

T (n) = O(f(n))

 

如何估算算法的时间复杂度?                                          

算法 = 控制结构 + 原操作(固有数据类型的操作)

算法的执行时间=原操作(i)的执行次数×原操作(i)的执行时间算法的执行时间

 

从算法中选取一种对于所研究的问题来说是 基本操作 的原操作,以该基本操作 在算法中重复执行的次数 作为算法运行时间的衡量准则

T (n) 为算法的 (渐近) 时间复杂度 原操作执行次数之和 成正比

四、算法的存储空间需求

算法的空间复杂度

S(n) = O(g(n))

表示随着问题规模

若输入数据所占空间只取决与问题本身,和算法无关,则只需要分析除输入和程序之外的额外空间原地工作 

若所需额外空间相对于输入数据量来说是常数,则称此算法为

若所需存储量依赖于特定的输入,则通常按最坏情况考虑。 

n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。算法的存储量包括:(输入数据所占空间;程序本身所占空间;辅助变量所占空间)。

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值