斐波那契查找算法de改进.pdfVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
斐波那契查找算法de改进.pdf

第 31卷第 3期 杭 州 电子 科 技 大 学 学 报 Vo1.31.No 3 201t年o6月 Journal of Hangzhou Dianzi University Jun.20l1 斐波那契查找算法的改进 王 立波 (杭州电子科技大学 软件与智能技术研究所,浙江 杭州 310018) 摘要:该文讨论了分治查找的斐波那契算法,描述了利用斐波那契数列对有序表进行分割、查找的 过程 ,发现了现有教材中在描述斐波那契查找算法时的错误和不足,提出了自己的算法改进方法 并给出了修正后的斐波那契查找算法,验证了改进斐波那契查找算法的正确性和鲁棒性。 关键词 :二分查找;斐波那契数列;斐波那契查找 中图分类号:TN401 文献标识码:A 文章编号 :1001—9146(2011)03—0054—04 0 引 言 查找是计算机数据处理时使用最频繁的基本操作,其中,经典的二分查找是针对有序表的查找方 法 ¨3,其算法总是用待查找关键字 比较有序表剩余部分的中间关键字来决定查找过程 的下一步操 作。显然,二分查找是用折半的方式分割查找范围、从而提高查找效率的方法,其算法思想是一种典型 的分治策略。斐波那契查找算法是另外一种分治的方法,它是利用斐波那契数列对有序表进行有效分 割从而实现查找的过程。斐波那契查找算法在国内、外 《数据结构》的主流教材 刮中均有介绍,在此基 础上,Subasi.M和Yildifim.N提出了一种对斐波那契查找算法进行优化的方法 ;本文通过多年来对 二分查找和斐波那契查找算法的研究,发现对于传统的斐波那契查找算法也可从另一角度加以改进。 1 斐波那契查找算法 1.1 斐波那契数列 在算术书中,意大利数学家L.斐波那契提到了一个古代数学趣题——兔子问题:假定一对大兔每 月能生出一对小兔,而小兔经过一个月就长成大兔,问从一对小兔开始,一年后共繁殖成多少对大兔? 这个问题导出一个数列:0,1,1,2,3,5,8,13,2l,34,…,该数列定义为斐波那契数列,它的规律是,从第 三项起,每一项都等于前两项之和,即:Fj=F卜+Fj_2。它的通项公式是: 去(( 一“( )“ 式中,虽含有对无理数的运算,但对任一个正整数 n,结果都是整数。 以下是求斐波那契序列的c语言函数: void FibonacciSeq(intn,int fib) { //求 n项斐波那契数列 肺l0I=0; fib[1]=1; for(int i=2;i。n;i++) 收稿 日期:2010—06—28 作者简介:王立波(1962一),男,浙江宁波人,副教授,计算机软件 第 3期 王立波:斐波那契查找算法的改进 55 fib[i]=fib[i一1]+6b[i一2]; } 1.2 斐波那契查找 如何利用斐波那契数列对有序表进行有效分割?以下分两种情形讨论。 1.2.1 当查找表中元素个数n等于Fj—I时 当查找表中元素个数恰好为某一斐波那契数列值减 1时, 对于关键字Key的查找,斐波那契查找算法的分治策略如图1 所示 ,即: ‘ 令mid=Fj_1; fl=Fj一2;t2=Fj一3; (1)若 sT[mid]==Key;则查找成功,返回。 (2)若 ST[mid]Key;则在有序表未查找区间的前段查 图1 n=Fj一1时查找表的分治图 找,此时,前段区间的元素个数恰好为F.一一1,若元素个数 1,则查找失败;否则下一比较元素的位序 为:mid=mid—t2;修正n , 使得: t=fl —t2 ;fl =21 ;21 =t; (3)若 sT[mid]Key;则在有序表未查找区间的 后段查找,此时,后段区间的元素个数恰好为F 一1,若元素个数 1,则查找失败;否则下一比较

文档评论(0)

gr4d52fg46fr3df + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档