- 1、本文档共107页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 查找 new(10-11)
数据结构课程的内容 第9章 查找 9.1 基本概念 讨论: (4)如何评估查找方法的优劣? 9.2 静态查找表 一、顺序查找(Linear search,又称线性查找 ) 顺序表的存储结构定义 (2)顺序表查找算法的实现: (3)顺序表查找算法的描述: 讨论① 查不到怎么办? 二、折半查找(又称二分查找或对分查找) 2、折半查找算法步骤 四、分块查找(索引顺序查找) 查找步骤分两步进行: 分块查找方法评价 9.2 动态查找表 3.二叉排序树的插入算法 根据动态查找表的定义,“插入”操作在查找不成功时才进行; 二叉排序树的构造过程 若从空树出发,经过一系列的插入操作之后(重复值亦可插入),可生成一颗二叉排序树,其根结点为第一个插入的结点。 数据元素的输入顺序不同,则得到的二叉排序树形态也不同。 对二叉排序树进行中序遍历,可得到按关键字有序递增的线性序列。 二叉排序树的构造过程 二叉排序树的构造算法完整。 BiTree create() {BiTree bst=NULL,f=NULL;//bst为树根 while(cinch!=’#’) { s=new BitNode; s-data=ch; s-lchild=s-rchild=NULL; //生成新结点 if(bst==NULL) bst=s; //新插入的结点作为根结点 else //根据大小决定插入左或右 { p=bst; while(p) //查找插入位置 if(ch=p-data) {f=p;p=p-rchild;} //向右查找 else { f=p;p=p-lchild;} //向左查找 if( ch=f-data)f-rchild=s; //作为右叶子 else f-lchild=s; //作为左叶子 }// else } //while 创建结束 return bst;} 例:从下面的二叉排序树中删除结点P。 删除操作过程(三种情况) 最好情况:即:与折半查找中的判定树相同(形态比较均衡) 二、平衡二叉树(二叉平衡树) 何谓“平衡二叉树”? 1、何谓“平衡二叉树”? 1)LL平衡旋转:单向右旋 3)LR平衡旋转:先左后右 例:请将下面序列构成一棵平衡二叉排序树: ( 13,24,37,90,53) 图示 附加内容:平衡旋转事例(略讲) 附加内容:平衡旋转事例(以下内容不讲) 附加内容:平衡旋转事例(以下内容不讲) 附加内容:平衡旋转事例(以下内容不讲) 附加内容:平衡旋转事例(以下内容不讲) 附加内容:平衡树分析(以下内容不讲) 附加内容:平衡树分析(以下内容不讲) 附加内容:平衡树分析(以下内容不讲) 附加内容:平衡树分析(以下内容不讲) 附加内容:平衡树分析(以下内容不讲) 三、 B - 树 B-树 2、动态查找表 2、动态查找表 2、动态查找表 2、动态查找表 2、动态查找表 2、动态查找表 哈希查找 基本思想:在记录的存储地址和它的关键字之间建立一个确定的对应(函数)关系;这样,不经过关键字的比较,一次存取(计算)就能得到所查元素的查找方法. 8.4 哈希查找表 一、哈希函数的概念 哈希函数——在记录的关键字与记录的存储地址之间建立的一种对应关系叫~ 哈希函数是一种映象,是从关键字空间到存储地址空间的一种映象 哈希函数可写成:Addr(ai)=H(keyi) ai是表中的一个记录(元素) keyi是ai的关键字 Addr(ai)是ai的存储地址 哈希表—应用哈希函数,由记录的关键字确定记录在表中的地址,并将记录放入此地址,这样构成的表叫~ 哈希查找—又叫散列查找,利用哈希函数进行查找的过程叫~ 冲突 二、哈希函数的构造方法 1、直接定址法 数字分析法 构造:对关键字进行分析,取关键字的若干位或其组合作哈希地址 适合于关键字位数比哈希地址位数大,且可能出现的关键字事先知道的情况 平方取中法 构造:取关键字平方后中间几位作哈希地址 理由:因为中间几位与数据的每一位都相关。 例:2589的平方值为6702921,可以取中间的029为地址。 折叠法 构造:将关键字分割成位数相同的几部分,然后取这几部分的叠加和(舍去进位)做哈希地址 种类 移位叠加:将分割后的几部分低位对齐相加 间界叠加:从一端沿分割界来回折送,然后对齐相加 适于关键字位数很多,且每一位上数字分布大致均匀情况 除留余数法(重
文档评论(0)