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

第9篇 章 查找 数据结构课件.ppt

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

第9章 查找;1.熟练掌握顺序表和有序表(折半查找)的查找算法及其性能分析方法; 2.熟练掌握二叉排序树的构造和查找算法及其性能分析方法; 3.掌握二叉排序树的插入算法,了解二叉排序树的删除算法; 4.熟练掌握哈希函数(除留余数法)的构造 5.熟练掌握哈希函数解决冲突的方法及其特点 ;基本概念;关键字的平均比较次数,也称平均搜索长度ASL(Average Search Length);顺序查找; int LocateELem(SqList L,ElemType e) { for (i=0;i L.length;i++) if (L.elem[i]==e) return i+1; return 0;};int Search_Seq( SSTable ST , KeyType key ){ //若成功返回其位置信息,否则返回0 ST.elem[0].key =key; //设立哨兵,当n1000时,查找时间将减少一半 for( i=ST.length; ST.elem[ i ].key!=key; - - i ); //不用for(i=n; i0; - -i) 或 for(i=1; i=n; i++) return i; //若到达0号单元才结束循环,不成功,返回0(i=0)。成功时则返回找到的那个元素的位置i。 };空间复杂度:一个辅助空间。 时间复杂度: 1) 查找成功时的平均查找长度 设表中各记录查找概率相等 ASLs(n)=(1+2+ ... +n)/n =(n+1)/2 2)查找不成功时的平均查找长度 ASLf =n+1; 算法简单,对表结构无任何要求(顺序和链式) n很大时查找效率较低 改进措施:非等概率查找时,可按照查找概率进行排序。;n个数存在一维数组A[1..n]中,在进行顺序查找时,这n个数的排列有序或无序其平均查找长度ASL不同。 ;low; ;1 2 3 4 5 6 7 8 9 10 11;折半查找(非递归算法);折半查找(递归算法); -1; -1;查找成功时比较次数:为该结点在判定树上的层次数,不超过树的深度 d = ? log2 n ? + 1 查找不成功的过程就是走了一条从根结点到外部结点的路径d或d-1。;查找过程:每次将待查记录所在区间缩小一半,比顺序查找效率高,时间复杂度O(log2 n) 适用条件:采用顺序存储结构的有序表,不宜用于链式结构 ;分块查找;设b为索引表长度,s为块中记录个数 ASLbs= ;折半查找索引表+顺序查找被确定的块 ASLbs=[log2(b+1)-1]+(s+1)/2 ? log2(n/s+1)+s/2;9.2 动态查找表;[动态查找表上的基本运算] (抽象数据类型226页) (1)初始化操作 initialize(dt) (2)查找函数 search(dt,K) 返回元素在表中的位置 (3)插入操作 insert (dt,e) (4)删除操作 delete (dt,K) (5)遍历操作 traverse(dt);二叉排序树或是空树,或是满足如下性质的二叉树: (1)若其左子树非空,则左子树上所有结点的值均小于根结点的值; (2)若其右子树非空,则右子树上所有结点的值均大于等于根结点的值; (3)其左右子树本身又各是一棵二叉排序树;练习;45;若查找的关键字等于根结点,成功 否则  若小于根结点,查其左子树  若大于根结点,查其右子树 在左右子树上的操作类似;第i层结点需比较i次。在等概率的前提下,上述两图的平均查找长度为:;平均查找长度和二叉树的形态有关,即, 最好:log2n(形态匀称,与二分查找的判定树相似) 最坏: (n+1)/2(单支树);二叉排序树的操作-插入;45; {10, 18, 3, 8, 12, 2, 7, 3};不同插入次序的序列生成不同形态的二叉排序树;二叉排序树的操作-删除(略);9.3 哈希表;若将学生信息按如下方式存入计算机,如: 将2001011810201的所有信息存入V[01]单元; 将2001011810202的所有信息存入V[02]单元; …… 将2001011810231的所有信息存入V[31]单元。;数据元素序列(14,23,39,9,25,11),若规定每个元素k的存储地址H(k)=k,请画出存储结构图。;根据哈希函数H(k)=k 查找key=9,则访问H(9)=9号地址,若内容为9则成功; 若查不到,则返回一个特殊值,如

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档