c语言中函数创建三要素,数据结构(C语言描述)第1章 引论(46页)-原创力文档...

数据结构(C语言版)第3版;;1.1 算法及其复杂性的概念;1.1.1 算法与程序 算法是由若干条指令组成的有穷序列,且具有下述几条性质:

;① 输入:有零个或多个由外部提供的量作为算 法的输入。② 输出:算法产生至少一个量作为输出。③ 确定性:组成算法的每条指令是清晰的,无 歧义的。④ 有限性:算法中每条指令的执行次数是有限 的,执行每条指令的时间也是有限的。;1.1.2 算法复杂性的概念 一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的多少上,所需要的资源越多,就说该算法的复杂性越高。;计算机的资源最重要的是时间和空间资源。因此,算法的复杂性有时间复杂性和空间复杂性之分。对于任意给定的问题,设计出复杂性尽可能低的算法是设计算法时追求的一个重要目标。;当给定的问题已有多种算法时,选择其中复杂性最低者,是选用算法应遵循的一个重要准则。因此,算法复杂性分析对算法的设计或选用有重要的指导意义和实用价值。;?;?;?;?;?;用?W?评估算法的复杂性,得到的只是该复杂性的一个下界。这个下界的阶越高,则评估就越精确,结果就越有价值。用?W?评估算法的复杂性,得到的只是该复杂性的一个下界。这个下界的阶越高,则评估就越精确,结果就越有价值。;1.2 算法的表达与数据表示;(1)将实际问题数学化;(2)对于确定的数学问题设计求解的方法;(3)用计算机上的一种程序设计语言来表达 已设计好的算法;(4)在计算机上编辑、调试和测试编制好的 程序,直到输出所要求的结果。;1.2.2 表达算法的抽象机制算法实现有如下三要素:(1)作为运算序列中各种运算的对象和结果的数据;(2)运算序列中的各种运算;(3)运算序列中的控制转移。

;高级语言提供表达算法控制转移的如下方式:(1)默认的顺序控制;(2)条件(分支)控制;(3)选择(情况)控制; (4)循环控制;(5)函数调用,包括递归函数调用;(6)无条件转移。

;1.3 抽象数据类型;因而仍然需要进一步抽象。抽象数据类型是算法的一个数据模型???同定义在该模型上并作为该算法构件的一组运算。这个概念明确地把数据模型与该模型上的运算紧密地联系起来。数据模型与定义在该模型上的运算之间存在着的这种密不可分的联系是抽象数据类型的概念产生的背景和依据。;算法底层的设计任务:(1)对于每一个抽象数据类型名,赋予其具体的数据结构;(2)对于每一个抽象类型上所定义的每一个运算名,赋予其具体的函数。;1.3.2 使用抽象数据类型的好处(1)算法顶层的设计与底层的实现分离,在进行顶层设计时不必考虑所用的数据和运算如何表示和实现;反之,在进行数据表示和底层运算实现时,只要定义清楚抽象数据类型,而不必考虑在什么场合引用。

;(2)算法设计与数据结构设计隔开,允许数据结构自由选择、从容比较、优化算法和提高程序运行的效率。(3)数据模型和该模型上的运算统一在抽象数据类型中,反映了它们之间内在的互相依赖和互相制约的关系,便于空间和时间耗费的折衷,灵活地满足用户的要求。;(4)由于顶层设计和底层实现的局部化,在设计中出现的差错也是局部的,因而容易查找,容易纠正。在设计中常常要做的增、删、改也都是局部的,因而也都很容易进行。用抽象数据类型表述的程序具有较好的可维护性。;(5)编出来的程序自然地呈现模块化,而且抽象数据类型的表示和实现都可以封装起来,便于移植和重用。(6)为自顶向下逐步求精和模块化提供一种有效的途径和工具。(7)编出来的程序结构清晰,层次分明,便于程序正确性的证明和复杂性的分析。;1.4 数据结构、数据类型和抽象数据类型;数据结构是在整个计算机科学与技术领域中广泛使用的术语。它用来反映数据的内部构成。数据结构有逻辑上的数据结构和物理上的数据结构之分。数据结构是数据存在的形式。;数据是按照数据结构分类的,具有相同数据结构的数据属于同一类。同一类数据的全体称为一个数据类型。在高级程序设计语言中,数据类型用来说明数据在数据分类中的归属。一类数据结构对应着一种数据类型。一个数据变量在高级语言中的类型说明,必须是该变量所具有的数据结构所对应的数据类型。;数组结构的特点是:① 成分数据的个数固定,它们之间的逻辑关系由成分数据的序号来体现。这些成分数据按照序号的先后顺序排列起来。② 每一个成分数据具有相同的结构,属于同一数据类型。这种同一的数据类型称为基类型。;③ 所有成分数据被依序安排在一片连续的存储单元中。记录结构的特点是:① 成分数据的个数固定。但成分数据之间没有自然序。每一个成分数据被称为一个域并赋予域名。不同的域有不同的域名。;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值