网站大量收购独家精品文档,联系QQ:2885784924

《二分查找及算法设计.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  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文档。上传文档
查看更多
8 查 找 8.1 二分(折半)查找 一、二分查找的先决条件 表中结点按关键字有序,且顺序(一维数组)存储。 二、二分法思想:取中,比较 (1)求有序表的中间位置mid (2)若r[mid].key==k,查找成功; 若r[mid].keyk,在左子表中继续进行二 分查找; 若r[mid].keyk,则在右子表中继续进 行二分查找。 1 2 3 4 5 6 7 8 9 10 11 i=1,j=11, m=(i+j)/2=6。 r[m]k : 在右半部分继续查找。 i=m+1=7,j=11, m=(i+j)/2=9。 r[m]k : 在左半部分继续查找。 i=7, j=m-1=8, m=(i+j)/2=7。 r[m]k : 在右半部分继续查找。 i=m+1=8,j=8, m=(i+j)/2=8。 r[m]k : 在左半部分继续查找。 i=8, j=m-1=7 , ij: 查找失败 三、存储结构 key info typedef struct { keytype key; …………. } elemtype; 四、算法描述 int Search_bin (elemtype r[], int n, keytype k) { // r[1]..r[n] 是按key排序的n个元素,在表中查找 k i=1 ; j=n ; while ( i=j ) { mid=(i+j)/2 ; //取中 if (k== r[mid].key) return (mid) ; // 查找成功 else if (k r[mid].key) j=mid-1; //在左半部分继续查找 else i=mid+1; //在右半部分继续查找 } return(0);// k不在该有序表中。r[j].keykr[i].key } 五、二分查找判定树(以11个结点为例) 8.2 二叉排序树 三、二叉排序树的查找 8.3 平衡二叉树(AVL树) 8.4 hash(散列)查找 一、hash函数hash表 设计1个hash函数,计算 Hash函数, 其函数值恰好 是 key 在 hash 表中的地址 hash(key)=i (0..m-1) 二、hash查找的特点   ——基于计算 例8.3 hash查找示例。 人口统计表。 在右表中查找 1989年出生的人数。 查找方法(1):顺序查找 查找方法(2):二分查找 查找方法(3):hash 查找 hash(key)=key-1949 =1989-1949 =40 三、hash函数的构造方法  ——除留余数法 hash(key)=key%p p≤m (表长) 关键问题是: 如何选取 p ? p 应为不大于m 的最大质数 例:设表长m=8,16,32,64,128,1001 则 p=7,13,31,61,127,1001 四、冲突的概念与处理方法    若对于不同的键值k1和k2,且k1 ≠ k2,  但 hash(k1)=hash(k2),即具有相同的散列地址,这种现象称为冲突。 称 k1、k2称为同义词。 例8.4 key={3,15,20,24},m=5(表长), hash(k)=k%5 hash(15)=0 hash(20)=0 产生冲突。 冲突的处理——链地址法 将具有相同散列地址的记录都存储在同一个线性链表中。 例8.5 key={14,1,68,27,55,23,11,10,19,20,79,84}, hash(key)=

文档评论(0)

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

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

1亿VIP精品文档

相关文档