- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第一章 数据结构与算法
算 法
一、算法的基本概念
算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算方法,程序可以作为算法的一种描述。(算法也可以用流程图、专门的描述语言、自然语言来描述。)
1、算法的基本特征:
可行性,针对实际问题而设计的算法,执行后能够得到满意的结果。
确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性;
有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义;
拥有足够的情报,要使算法有效必需为算法提供足够的情报当算法拥有足够的情报时,此算法
才最有效的;而当提供的情报不够时,算法可能无效。
2、算法的基本要素
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
(1)算法中对数据的运算和操作:
在计算机系统中,基本的运算和操作有以下4类:
①算术运算:主要包括加、减、乘、除等运算;
②逻辑运算:主要包括“与”、“或”、“非”等运算;
③关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算;
④数据传输:主要包括赋值、输入、输出等操作。
(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。
描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。
3、算法设计的基本方法
列举法
列举法的基本思想是,根据提出的问题,列举所有可能的情况,并用问题中给定的条件检验哪些是需要的,哪些是不需要的。
归纳法:归纳就是通过观察一些简单而特殊的情况,最后总结出一般性的结论。
递推:是指从已知的初始条件出发,逐次推出所要求的各中间结果和最后结果。
递归
人们在解决一些复杂问题时,为了降低问题的复杂程度(如问题的规模等),一般总是将问题逐层分解,最后归结为一些最简单的问题。这种将问题逐层分解的过程,实际上并没有对问题进行求解,而只是当解决了最后那些最简单的问题后,再沿着原来分解的逆过程逐步进行综合,这就是递归的基本思想。
递归分为直接递归与间接递归两种。
减半递推技术
所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。例:二分法查找
回溯法
在工程上,有些实际问题很难归纳出一组简单的递推公式或直观的求解步骤,并且也不能进行无限的列举。对于这类问题,一种有效的方法是“试”。通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步试探,若试探成功,就得到问题的解,若试探失败,就逐步回退,换别的路线再逐步试探。
二、算法的复杂度
算法复杂度:算法时间复杂度和算法空间复杂度。
1、算法的时间复杂度
算法的时间复杂度,是指执行算法所需要的计算工作量。(不直接衡量时间)
算法的工作量用算法所执行的基本运算次数来度量,只依赖于问题的规模,它是问题的规模函数。即:算法的工作量=f(n)
平均性态(平均时间复杂度)
所谓平均性态是指各种特定输入下的基本运算次数的加权平均值来度量算法的工作量。
最坏情况复杂性
所谓最坏情况分析,是指在规模为n时,算法所执行的基本运算的最大次数。
2、算法的空间复杂度
算法的空间复杂度是指执行这个算法所需要的内存空间。包括算法程序占用的空间、输入数据所占用的空间及算法执行过程中所需要的额外空间。
数据结构的基本概念
数据结构作为计算机的一门学科,主要研究和讨论以下三个方面:
(l)数据集合中个数据元素之间所固有的逻辑关系,即数据的逻辑结构;
在对数据元素进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;
对各种数据结构进行的运算。
讨论以上问题的目的是为了提高数据处理的效率,即:
(l)提高数据处理的速度;
(2)尽量节省在数据处理过程中所占用的计算机存储空间。一、什么是数据结构
数据结构是指反映数据元素之间的关系的数据元素集合的表示,包括数据的逻辑结构和储存结构。
1、数据的逻辑结构
数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构。一个数据的逻辑结构应包含以下两方面信息:
表示数据元素的信息;
表示各数据元素之间的前后件关系。可以用二元关系表示为:
B=(D,R)
其中B表示数据结构,D表示数据元素的集合,R表示D中各数据元素之间的前后关系。例:一年四季的数据结构可以表示为:
B=(D,R)
D={春,夏,秋,冬}R={(春夏),(夏,秋),(秋,冬)}
例:家庭成员的数据结构可以表示为:
B=(D,R)
D={父亲,儿子,女儿}R={(父亲,儿子),(父亲,女儿)}
数据的逻辑结构包括集合、线形结构、树形结构和图形结构四种。
2、数据的存储结构
数据的存储结构是
文档评论(0)