数据结构(c语言版)(全套课件).ppt

数据结构(c语言版)(全套课件).ppt

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

2 算法分析 不失一般性,设查找每个记录成功的概率相等,即Pi=1/n;查找第i个元素成功的比较次数Ci=n-i+1 ; ◆ 查找成功时的平均查找长度ASL: ASL=∑ Pi?Ci= i=1 n ∑ (n-i+1)= i=1 n n ― 1 2 n+1 64 5 13 19 21 37 56 64 75 80 88 92 监视哨 查找64 0 1 2 3 4 5 6 7 8 9 10 11 p p p p p 比较次数=5 图9-1 顺序查找示例 ASL=∑ Pi?Ci= i=1 n 2 n+1 ∑ (n-i+1)+ i=1 n 2n 1 =3(n+1)/4 ◆ 包含查找不成功时:查找失败的比较次数为n+1,若成功与不成功的概率相等,对每个记录的查找概率为Pi=1/(2n),则平均查找长度ASL: 9.2.2 折半查找(Binary Search) 折半查找又称为二分查找,是一种效率较高的查找方法。 前提条件:查找表中的所有记录是按关键字有序(升序或降序) 。 查找过程中,先确定待查找记录在表中的范围,然后逐步缩小范围(每次将待查记录所在区间缩小一半),直到找到或找不到记录为止。 1 查找思想 用Low、High和Mid表示待查找区间的下界、上界和中间位置指针,初值为Low=1,High=n。 ⑴ 取中间位置Mid:Mid=?(Low+High)/2? ; ⑵ 比较中间位置记录的关键字与给定的K值: ① 相等: 查找成功; ② 大于:待查记录在区间的前半段,修改上界指针: High=Mid-1,转⑴ ; ③ 小于:待查记录在区间的后半段,修改下界指针:Low=Mid+1,转⑴ ; 直到越界(Low>High),查找失败。 2 算法实现 int Bin_Search(SSTable ST , KeyType key) { int Low=1,High=ST.length, Mid ; while (Low<High) { Mid=(Low+High)/2 ; if (EQ(ST. elem[Mid].key, key)) return(Mid) ; else if (LT(ST. elem[Mid].key, key)) Low=Mid+1 ; else High=Mid-1 ; } return(0) ; /* 查找失败 */ } 查找21 5 13 19 21 37 56 64 75 80 88 92 1 2 3 4 5 6 7 8 9 10 11 Mid High Low 5 13 19 21 37 56 64 75 80 88 92 1 2 3 4 5 6 7 8 9 10 11 Mid High Low 5 13 19 21 37 56 64 75 80 88 92 1 2 3 4 5 6 7 8 9 10 11 Mid High Low (a) 查找成功示例 3 算法示例 如图9-2(a),(b)所示。 查找71 -5 13 17 23 38 46 56 65 78 81 92 1 2 3 4 5 6 7 8 9 10 11 Mid High Low -5 13 17 23 38 46 56 65 78 81 92 1 2 3 4 5 6 7 8 9 10 11 Mid High Low -5 13 17

文档评论(0)

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

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

1亿VIP精品文档

相关文档