- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
;;;;1.1数据结构的基本概念;抽象数据类型(ADTs:AbstractDataTypes);抽象数据类型可以用以下的三元组来表示:
ADT=(数据对象,数据对象之间的关系,在数据对象上的操作)
;例如,线性表的抽象数据类型描述如下:
ADTList
{
数据对象:D={ai|ai∈ElemSet,i=1,2,…,n,n≥0}
数据关系:R={ai-1,ai|ai-1,ai∈D,i=2,3,…,n}
基本操作:
InitList(L)
初始条件:表L不存在。
操作结果:构造一个空的线性表。
ClearList(L)
初始条件:表L已存在。
操作结果:表L被置为空。
ListLength(L)
初始条件:表L已存在。
操作结果:返回线性表L的元素个数。
…
}ADTList;1.3数据的逻辑结构与存储结构;1.3数据的逻辑结构和存储结构;1.4算法的特性和算法的描述;1.4算法的特性和算法的描述;1.5算法;1.4算法的特性和算法的描述;1.4.3算法的描述
算法的描述方式有多种:自然语言、伪代码(或称为类语言)、程序流程图及程序设计语言(如C语言)。
例如,求两个正整数m和n的最大公约数的算法可用以下几种方式描述。;1.4算法的特性和算法的描述;1.5算法;1.5算法;1.4算法的特性和算法的描述;1.5.1算法设计的四个目标
一个好的算法应该具备以下目标:
1.算法的正确性
算法的正确性(correctness)是指算法至少应该包括对于输入、输出和加工处理无歧义性的描述,能正确反映问题的需求,且能够得到问题的正确答案。;通常算法的正确性应包括以下4个层次:a.算法对应的程序没有语法错误;b.对于几组输入数据能得到满足规格要求的结果;c.对于精心选择的典型的、苛刻的带有刁难性的几组输入数据能得到满足规格要求的结果;d.对于一切合法的输入都能得产生满足要求的结果。;2.可读性
算法主要是为了人们方便阅读和交流,其次才是计算机执行。可读性(readability)好有助于人们对算法的理解,晦涩难懂的程序往往隐含错误不易被发现,难以调试和修改。;3.健壮性(robustness)
当输入数据不合法时,算法也能做出反应或进行处理,而不会产生异常或莫名其妙的输出结果。例如,求一元二次方程根ax2+bx+c=0的???法,需要考虑多种情况,先判断b2-4ac的正负,如果为正数,则该方程有两个不同的实根;如果为负,表明该方程无实根;如果为零,表明该方程只有一个实根;如果a=0,则该方程又变成了一元一次方程,此时若b=0,还要处理除数为零的情况。如果输入的a、b、c不是数值型,还要提示用户输入错误。;4.高效率和低存储量
效率指的是算法的执行时间。对于同一个问题如果有多个算法能够解决,执行时间短的算法效率高,执行时间长的效率低。存储量需求指算法在执行过程中需要的最大存储空间。效率与低存储量需求都与问题的规模有关,求100个人的平均分与求1000个人的平均分所花的执行时间和运行空间显然有一定差别。设计算法时应尽量选择高效率和低存储量需求的算法。;1.5.2算法效率评价
算法执行时间需通过依据该算法编制的程序在计算机上的
运行时所耗费的时间来度量,而度量一个算法在计算机上的执
行时间通常有两种方法:
1.事后统计方法
这种方法有两个缺陷:一是必须依据算法事先编制好程
序,这通常需要花费大量的时间与精力;二是时间的长短依赖
计算机硬件和软件等环境因素,有时会掩盖算法本身的优劣。
因此,人们常常采用事前分析估算的方法评价算法的好坏。;2.事前分析估算方法
这主要在计算机程序编制前,对算法依据数学中的统计方
法进行估算。这主要是因为算法的程序在计算机上的运行时
间取决于以下因素:
a.算法采用的策略、方法;
b.编译产生的代码质量;
c.问题的规模;
d.书写的程序语言,对于同一个算法,语言级别越高,执行效率越低;
e.机器执行指令的速度。;例如,斐波那契数列的算法和语句的的频度如下。
每一条语句的频度
f0=0;1
f1=1;
文档评论(0)