搜索算法效率比较精选.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
搜索算法效率比较精选

数据结构课程设计报告 搜索算法效率比较的设计 专业 计算机科学与技术 学生姓名 Xxxxx 班级 Xxxx 学号 Xxxx 指导教师 Xxx 完成日期 2016年6月16日 目 录 1.设计题目 3 2.设计目的及要求 3 2.1.目的 3 2.2.要求 3 3.设计内容 3 4.设计分析 4 4.1.空间复杂度 5 4.2非递归线性搜索设计 5 4.3递归线性搜索 5 4.4二叉搜索设计 6 5.设计实践 7 5.1非递归线性搜索模块设计 7 5.2递归线性搜索模块设计 7 5.3二叉搜索模块设计 7 5.4.主程序模块设计 8 6测试方法 10 7.程序运行效果 11 8.设计心得 12 搜索算法效率比较的设计 1.设计题目 给定一个已排序的由N个整数组成的数列{0,1,2,3,……,N-1},在该队列中查找指定整数,并观察不同算法的运行时间。考虑两类算法:一个是线性搜索,从某个方向依次扫描数列中各个元素;另一个是二叉搜索法。要完成的任务是:分别用递归和非递归实现线性搜索;分析最坏情况下,两个线性搜索算法和二叉搜索算法的复杂度;测量并比较这三个方法在N=100,500,1000,2000,4000,6000,8000,10000时的性能。 2.设计目的及要求 2.1.目的 (1)需要同学达到熟练掌握C语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的程序设计问题; 2.2.要求 学生必须仔细阅读数据结构,认真主动完成课设的要求,有问题及时主动通过各种方式与教师联系沟通;要发挥自主学习的能力,充分利用时间,安排好课设的时间计划,并在课设过程中不断检测自己计划完成情况;独立思考,课程设计中各任务的设计和调试哦要求独立完成,遇到问题可以讨论,可以通过同学间相互讨论而解决。 3.设计内容   任何程序基本上都是要用特定的算法来实现的。算法性能的好坏,直接决定了所实现程序性能的优劣。此次对有关算法设计的基本知识作了简单的介绍。针对静态查找问题,以搜索算法的不同实现,并对非递归线性搜索算法、递归线性搜索算法和二叉搜索算法这三种方法进行了比较和分析。 算法是为求解一个问题需要遵循的、被清楚地指定的简单指令的集合。解决一个问题,可能存在一种以上的算法,当这些算法都能正确解决问题时,算法需要的资源量将成为衡量算法优良度的重要度量,列如算法所需的时间、空间等。算法是对问题求解过程的一种描述,是为解决一个问题或一类问题给出的一个正确的,有限长的操作序列。 两种线性搜索算法的程序结构分别为以下所示。非递归线性搜索从数组的最左边开始,逐个比较,直到找到所搜索的对象或者直到最后搜索失败。递归搜索从最右开始搜索。为什么不从最左边开始?因为从左边开始,每次递归除要传递待处理数列的左边界外,还需要传递运算数组的右边界(即N-1,这在本题目里也是变化的)。从而右边开始,每次只需传递数组的右边界(左边界固定为0)。 所谓时间复杂度时间复杂度?在刚才提到的时间频度中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律。为此,我们引入时间复杂度概念。 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。?按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),..., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 最坏时间复杂度和平均时间复杂度最坏情况下的时间复杂度称最坏时间复杂度。一般不特别说明,讨论的时间复杂度均是最坏情况下的时间复杂度。 这样做的原因是:最坏情况下的时间复杂度是算法在任何输入实例上运行时间的上界,这就保证了算法的运行时间不会比任何更长。?在最坏情况下的时间复杂度为T(n)=0(n),它表示对于任何输入实例,该算法的运行时间不可能大于0(n)。 平均时间复杂度是指所有可能的输入实例均以等概率出现的情况下,算法的期望运行时间。?4.1.空间复杂度 一个程序的空间复杂度是指运行完一个程序所需内存的大小。利用程序的空间复杂度,可以对程序的运行所需要的内存多少有个预先估计。一个程序执行时除了需要存储空间和存储本身所使用的指令、常数、变量和输入数据外,还需要一些对数据进行操作的工作单元和存储一

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档