数据结构第九章查找严蔚敏_第1页
数据结构第九章查找严蔚敏_第2页
数据结构第九章查找严蔚敏_第3页
数据结构第九章查找严蔚敏_第4页
数据结构第九章查找严蔚敏_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构第八章查找第八章查找知识点查找的基本概念三种基本查找方法:顺序查找、二分查找和分块查找树型查找的基本概念和查找算法散列法、散列函数冲突的基本概念和解决冲突方法难点二叉排序树查找平衡树及平衡树的调整第九章查找要求熟练掌握以下内容:三种基本查找方法的基本思想和算法二叉排序树查找的基本思想和算法散列法基本思想、散列函数的常用构造方法及解决冲突方法了解以下内容:平衡树及平衡树的调整B-树查找第九章查找第八章目录9.1查找的基本概念9.2基本查找方法9.3树型查找9.4散列法9.5应用举例及分析小结习题与练习第九章查找9.1查找的基本概念查找又称为查询或检索,是在一批记录中依照某个域的指定域值,找出相应的记录的操作。在计算机中,被查找的数据对象是由同一类型的记录构成的集合,可称之为查找表(searchtable)。在实际应用问题中,每个记录一般包含有多个数据域,查找是根据其中某一个指定的域进行的,这个作为查找依据的域称为关键字(key)。第九章查找对于给定的关键字的值,如果在表中经过查找能找到相应的记录,则称查找成功,一般可输出该记录的有关信息或指示该记录在查找表中的位置。若表中不存在相应的记录,则称查找不成功,此时应该给出不成功的信息。查找算法中的基本运算是记录的关键字与给定值所进行的比较,其执行时间通常取决于比较的次数。因此,通常以关键字与给定值进行比较的记录个数的平均值,作为衡量查找算法好坏的依据。返回第九章查找9.2.1顺序查找顺序查找(Sequentialsearch)也称为线性查找,是采用线性表作为数据的存储结构,对数据在表中存放的先后次序没有任何要求。顺序查找是最简单的查找方法,它的基本思想是:查找从线性表的一端开始,顺序将各单元的关键字与给定值k进行比较,直至找到与k相等的关键字,则查找成功,返回该单元的位置序号;如果进行到表的另一端,仍未找到与k相等的关键字,则查找不成功,返回0作为查找失败的信息。第九章查找顺序查找的线性表定义如下:#defineMAXITEM100/*最多项数*/structelement{keytypekey;Elemtypedata;};typedefstructsqlist[MAXITEM];这里keytype和ElemType可以是任何相应的数据类型,如int、float或char等,在算法中我们规定它们缺省是int类型。第九章查找顺序查找算法intsequsearch(sqlistr,intk,n){/*n为线性表r中元素个数*/i=1while(r[i].key!=k&&i<=n)i++;if(i>n)i=0;return(i);}第九章查找顺序查找算法分析此函数的主要运算时间是用于循环语句逐单元进行比较判断r[i].key是否等于k,因此顺序查找的速度较慢,最坏的情况查找成功需比较n次,最好的情况是比较1次,如果对每个关键字进行查找的概率相等,则查找成功所需的平均比较次数为(n+1)/2,而查找失败则需比较(n+1)次,时间复杂度为O(n)。顺序查找的优点是算法简单、适应面广,且不要求表中数据有序。缺点是平均查找长度较大,特别是当n较大时,查找效率较低,不宜采用。第九章查找9.2.2二分查找二分查找(Birarysearch)也称为折半查找,它的查找速度比顺序查找快,但它要求数据在线性表中按查找的关键字域有序排列。设n个数据存放于数组r中,且已经过排序,按由小到大递增的顺序排列。采用二分查找,首先用要查找的给定值k与表正中间元素的关键值相比较,此元素的下标。第九章查找比较结果有三种可能:⑴如果r[m].key>k,说明如果存在欲查找的元素,该元素一定在数组的前半部分,查找范围缩小了一半,修改查找范围的的上界high=m-1,继续对数组的前半部分进行二分查找;⑵如果r[m].key<k,说明如果存在欲查找的元素,该元素一定在数组的后半部分,查找范围缩小了一半,修改查找范围的的下界low=m+1,继续对数组的后半部分进行二分查找;⑶如果r[m].key=k,查找成功,m所指的记录就是查找到的数据。第九章查找重复上述过程,查找范围每次缩小1/2,当范围不断缩小,出现查找范围的下界大于上界时,则查找失败,确定关键字为key的记录不存在。二分查找是一种效率较高的算法,最好的情况是第一次比较即找到所查元素,即使一次比较没有找到,也把进一步查找的范围了缩小一半。与此类似,每比较一次均使查找范围减半,故最坏的情况所需比较次数为O(logn),对于较大的n显然较顺序查找速度快得多。第九章查找二分查找算法intbinsearch(sqlistr,intk,n){inti,low=1,high=n,m,find=0;/*low和high分别表示查找范围的起始单元下标和终止单元下标,find为查找成功的标志变量*/while(low<=high&&!find){m=(low+high)/2;if(k<r[m].key)high=m-1;elseif(k>r[m].key)第九章查找二分查找算法续low=m+1;else{i=m;find=1;}}if(!find)i=0;return(i);}第九章查找9.低2.座3分块历查找分块琴查找邮又称盾为索么引顺讲序查作找,亿是顺教序查棋找方重法的座另一丑种改渔进,淹其性昂能介意于顺腾序查萍找和帆二分怨查找缓之间品。分块榴查找串把线弟性表扶分成标若干滴块,神每一贡块中符的元晶素存晴储顺情序是御任意骗的,酷但块缸与块悔之间妄必须苦按关饺键字峰大小娃有序豆排列央,即源前一烫块中粱的最诸大关泥键字嗓值小棍于后膝一块栽中的疯最小忧关键耽字值慰。还需佛要建芝立一禁个索删引表谨,索馋引表赚中的班一项提对应决于线厚性表根中的惨一块养,索浅引项销由键煮域和形链域坐组成谜,键悠域存爱放相桐应块士的最蹈大关葵键字定,链为域存柴放指偶向本晶块第累一个茶结点状和最室末一唯个结岁点的盈指针言。索畏引表座按关揉键字情值的糟递增柱顺序扛排列过。第九找章樱查找分块盘查找懒的算仁法分腹两步楼进行蚀,首叫先确且所查迷找的季结点熊属于葡哪一脸块,果即在轨索引齐表中螺查找慌其所稠在的霸块,解然后竭在块冈内查亭找待纠查的勤数据摧。由革于索同引表均是递额增有塌序的堵,可表采用币二分释查找家,而甜块内慨元素竖是无捕序的萝,只掏能采桂用顺屋序查顿找。忌如果昌块内赌元素获个数稼较少蚂,则浇不会盼对执鼓行速厨度有播太大阀的影斯响。例如血线性误表中保关键拾字为:9凡,2麦2,合12锄,1笼4,径35框,4掀2,肢44脾,3慢9,饰49拌,6饭0,菜59钱,4精7,藏79勾,9堆0,尚77拢,9载2其索总引如汁图9.年1所示富。第九瞧章伏查找图9.孙1线性民表与敲索引饶表第九捉章旬查找索引泽表的笔定义st昂ru穗ctin浊de厅xt纷er山m{ke伞yt术yp烂eke君y;in貌tlo旷w,夸hi排gh愤;};ty氏pe冤de网fst穴ru吩ctin识de灶xt没er习min续de栽x[想MA颗XI降TE建M]趟;这里港的ke撕yt锐yp海e可以南是任左何相露应的零数据抱类型耍,如in污t、fl斥oa律t、或ch心ar等,眯在算柿法中果,我率们规纯定ke谈yt首yp辰e缺省态是in欠t类型飘。第九答章叙查找分块往查找懒算法in批tbl蒙ks焰ea侄rc俘h(sq席li窜str,紫in州de蚊xid岭x,假in糖tk,厘bn)/*bn为块镇的个恳数*/{in洞ti,济hi答gh皂=bn扩,l喜ow=1虑,m哭id吨,j蔑,f展in笑d=获0;wh林il产e踪蝶(l善ow劲<=陷hi副gh轿&&缎!堵fi谈nd湾){哀/撇*二分究查找遣索引央表*/mi唇d=愤(l寸ow吗+h院ig衬h)悄/2特;if翁(k藏<id皱x[胡mi歇d]竭.k邻ey)hi捷gh蜘=m驶id绕-1奶;el粉se嘴i凝f(挪k>id碗x[渡mi告d]奔.k称ey)lo虹w=阅mi反d+确1;第九犹章执查找分块朋查找貌算法揪续el劲sefi寻nd品=1闹;}if萄(f属in召d=阔=1坛){i=id指x[馆mi希d]概.l惜ow;j=id夕x[粘mi乞d]把.h畏ig记h;}el灿se确i榨f笔(l淡ow鸭<bn)/*陈k小于抬索引山表内福最大喂值*/第九驾章禽查找分块纪查找醋算法损续{i=id膨x[趴lo统w]肠.l羡ow;j=id秃x[棕lo柜w]锐.h你ig另h;}wh斧il申e街(i企<=案j斩&&霸r喇[i钟].恋ke苏y亏!=劝k)i+根+;if虚(衰i>钥j)i=烦0;re臭tu枪rn誓(i雄);}返回第九溉章洒查找9.束3.辟1二叉泛排序航树查归找将原绳始数更据表唐示成存二叉没排序宵树,搭树的咳每个竹结点煮对应征一个颈记录汇,则豆可利圾用此反二叉雹排序始树进司行类纽奉似于服二分阅查找色思想雅的数伍据查售找,丢这也宾是一秧个逐飘步缩岛小查泛找范盼围的煮过程货。这骂种查强找方杯法称肥为树刚型查疤找。基本条思想假:查漏找过叛程从壁根结张点开傍始,锄首先方将它友的关竭键字列与给荐定值k进行掌比较递,如溜果相逼等,浮则查沫找成纵功,呼输出帖有关计的信落息;活如果幕不等处,若抱根结邻点关奇键字氧大于帝给定替值k,向左订子树五继续膨查找沃,否封则向傲右子相树继胞续查瓶找。向子邀树查蜜找又寒是树召型查坝找,堡先以纱子树映的根魔结点坛数据炉与k进行箱比较尚,如虽果不珠相等赔又转圾向它段的左萌或右舌子树用继续忌查找雾。第九贤章雕查找树型薪查找江是一耐种递智归的共查找甚过程石。在二仆叉排顽序树权上查拣找关掏键字工为k的结关点,魄成功纤时返亏回该潜结点盈位置拳,否掏则返彩回NU恰LL,递归妇函数边如下掀:bt初re购e*s硬ea宜rc银h棒(bt壳re驳e*b,须in桥tk){if勉(民b=炒=N茄UL倘L)re贸tu转rn烫(玻NU淡LL翁);el么se{if驴(b袋->别da隙ta虎==旷k)re侍tu袭rn替(读b)护;第九杯章析查找二叉监排序触树查寨找递刃归算贴法if佣(k遣<b揪->蕉da觉ta往)re棋tu勤rn交(嘉se泳ar漆ch光(磨b-惩>l匆ef妨t,静k)迹);el王sere冈tu做rn苦(吩se轮ar毙ch高(加b-捞>r具ig应ht突,k崇))室;}}第九劫章题查找非递晚归算锁法bt描re饭e*tr墓ee滤se周ar顶ch(bt港re楼e*b,凑in当tk){bt戚re醋e*p叹;p=属b;wh窜il磨e(愁p!帝=N须UL思L)符;{泽i萍f粥(p且->属da商ta掩==膀k)re旨tu鲁rn姐(片p)免;el汉se削i庆f禾(k妥<p挑->赞da则ta医)p=盲p-治>l乒ef退t;el叨se酱p月=p华->即ri防gh童t;}re汽tu此rn劲(示NU尘LL用);}第九鲁章皱查找在二搬叉排学序树疗上进涝行查谋找,秆若查鸦找成顽功,义则是签从根柏结点榜出发张走了捉一条僚从根那结点造到所问查找剂结点菠的路屑径;喘若查害找不司成功教,则太是从付根结凑点出宣发走团了一青条从辰根结搁点到材某个崖终端躺叶子础结点蜂的路伍径。枝与二为分查禾找类稍似,液和关次键字伴比较舟的次素数不屋超过鄙二叉招排序摧树的史深度粪。但是呼,含氏有n个结仓点的旋二叉颠树不附是唯琴一的牌,由监于对府其结劫点插蚀入的匠先后惧次序涂不同毙,所牧构成州的二和叉树骆的形诉态和越深度辆也可廉能不大同。腥例如暮,图9.朱2是按阻不同革插入抖次序圾得到罪的两描个二晋叉排佛序树遭。第九献章秆查找图9.明2两个老二叉稼排序禽树在查找井失败山的情教况下蜜,在挨这二扔个树朝上所燃进行末的关魄键字渡比较戏次数塘分别荣为3和6次。第九认章押查找二叉收排序穴树查无找分逐析树型嚼查找舞最坏胞情况刚时,坊需要统的查庭找时卷间取室决于沿树的莫高度挪,当息二叉简排序舞树接固近满妖二叉盯树时巴,其榆高度绣为lo弄g2n,最坏千情况晓下查拢找时近间为O(犁lo流g街n),与二颜分查悲找是绒同样绢数量颜级的泄;当承二叉抽排序洗树为两只有榴一个蔽端结某点的诉所谓样“退墓化树父”时担,其娘高度扔等于n,最坏梢情况元下查虎找时研间为O(炊n),与顺乞序查葱找属展于同稼一数鸽量级降。为了绕保证示树型进查找缓有较后高的倦查找右速度蚕,我敏们希结望该祝二叉晚树接茎近满绕二叉所树,泻也就吸是希渴望二保叉树献的每间一个梢结点约的左败、右汽子树恶高度落尽量抓接近教平衡季,即骄使按它任意悼次序漫不断某地插第入结耍点,奶也不骄要使帽此树鹿成为欠退化询树。第九挪章搅查找9.掉3.创2平衡拜树平衡卧树(B颤al泰an配ce槐d锁tr膨ee眨)也称宽为AV寨L树,亏是由活阿德步尔森—维尔陷斯基导和兰宇迪斯(Ad渔el棕so性n-悼ve未ls盖ki乐ian边dla思nd勺is)于19样62年首拌先提孤出的干。这是卡一种怎附加核了一科定限争制条以件的问二叉之树。扬我们烦定义才二叉肝树中松每一渗结点维的左诞子树围高度蓄减右蠢子树本高度店为该装结点塘的平需衡因烘子(Ba吵la留nc朗e谦fa蹲ct永or),所谓现平衡沿树,宿是指探一个绣二叉各树其转任一渴结点幅的平材衡因评子值载只能劈燕是+1,0或-1,即因任一迷结点则的左旗、右批子树用高度肥之差榆不超郑过1。如图9.倍3所示幼,图犁中数躁字为策该结恶点的鸭平衡嫌因子展。第九笛章愧查找平衡匪树平衡脊二叉伟树不平库衡二秒叉树第九甲章扒查找假设仙给平驶衡树农某个谷结点脾的左雀子树威插入撇一个笑新结请点,冶且此占新结酸点使泳左子宫树的划高度谨加1,我秀们可企能会衰遇到活以下宴三种摔情况缓:(1侍)如果赤原来采其左甲子树限高度hl与右惹子树栏高度hr相等凯,即周原来蝇此结屋点的殃平衡庆因子羞等于0,插入阵新结累点后诵将使帆平衡轿因子任变成+1,但播仍符吵合平盒衡树勾的条狠件,糟不必遵对其凤加以淘调整演;⑵如果绪原来hl伯>h奖r,即原厨来此吃结点孩的平趟衡因然子等裕于+1测,插入井新结额点后唐将使能平衡蒜因子构变成+2,破盒坏了独平衡算树的猪限制教条件沫,需妥对其均加以及调整早;⑶如果呀原来hl层<h骄r,即原妨来此卸结点惯的平烂衡因当子等菊于-1,插农入新涨结点逗后将睡使平渔衡因诊子变粮成0,平揪衡更具加改罪善,灰不必裹加以由调整肤。第九细章秘查找如果宜给平绩衡树部某结醉点的哪右子薯树插竖入一秋个结欧点,滔且设涨此新来结点垃使右境子树今的高漆度增凡加1,则帆也会缎遇到距与之工相对盆应的柿三种葛情况蹦。以图9.课4所示付的树只为例唇,设象原已矮有关祥键字娃为51,29,72,11和46这五吨个结腔点,宵原树加符合写平衡至树条罩件,至图中退各结邀点旁彻所标丸数字扩为该鼻结点睁的平奴衡因顾子。第九狂章处查找图9.均4平衡泼树插舱入结娃点第九犯章灶查找插入器新结懒点破乌坏了浙平衡馅树条糟件的应情况绵分为凉两类着,仍安以向度左子缎树插吹入新哈结点够为例仇,这爬两类裤情况功分别曾如图9.驰5(a)和(c庸)所示吊。图中货矩形血表示披子树执,矩卡形的戚高度腥表示槐子树衔的高至度,打带阴磁影线尚的方奴形则记表示勿插入辈新结滋点后灯造成慕的子芦树高鸦度加1,各挠结点叠旁所蝴标数渴字为巩该结涌点的如平衡灶因子掘。第九国章屑查找图9.育5平衡炊树的职调整第九粘章叛查找第九羊章东查找平衡降树以器二叉纸链表大作为底存储前结构,每个洲结点艇还要伴增加怀一个磁平衡很因子捞域。平衡貌树的丝式查找宫运算斯与普禽通树顺型查侨找完跪全相膏同,池由于琴平衡项树附卸加了粗平衡训条件贼,其抄高度晋与结疤点数恳相同杠的完胶全树抢属于兔同一嘱数量抛级,役所以弄有较膊快的柴查找霸速度碧。在插它入新旅结点候时,影当确丛定了匠新结摧点应召插入漫的位堤置后方,需你向回耻寻找球有关买平衡扣因子中变为+2或-2的祖票先,裳如有棉这种踢结点倘,则休取其馆中层揭数居疲最低天者,肝根据卷不同治的情攀况进娃行单奖旋转与或双菌旋转砍,使坏整个千树仍瓶然符愈合平树衡树提的条你件,择每次芬插入城结点黎后,冠还需温对有涉关祖状先的筹平衡级因子滔加以优修改盘。第九楼章唯查找9.添3.总3B-树前面系介绍庆的查长找方照法,哭均适覆用于同查找可存储借在内然存中恋的数洗据,本统称巡寿为内茄查找掩方法紫,它屿们适园用于才较小马的表埋,而婶对较耻大的队、存贿储在匙外存嗓储器领上的蔬文件庄就不解合适鹊了。B-树是一略种多路糊平衡孕查找记树,巷这是况一种衡适用瘦于外臭查找晨的方盘法的歉数据苹结构吨。B-树的坚定义烈:一棵m(m≥简3)阶的B-树,扛或者邮为空依树,潮或者商是满败足如坛下条遭件的m叉树景:第九讲章岂查找(1济)树中旗每个饮非终蓬端结班点至给少包土含以恼下数岂据项链:(n,忧A0,K1,A1,K2,…务…Kn,An)其中浙,n为关锄键字踩总数卸,Ki(1≤或i≤雅n)是关目键字纵,Ai是指签向子挪树根雹结点饶的指拜针。央关键谷字是举递增丽有序发的:K1<K2<…淹…Kn,且Ai(0音≤i昆≤n毯)所指屈子树看中所熊有结桑点的亚关键搞字均埋小于Ki+疲1,An所指善子树破中所撞有结宝点的某关键邀字均呜大于Kn。(2注)所有津的叶藏子结兰点都柄在同赵一层苗上,既并且新不带稠信息猜(可蔑以看据作是仪外部颂结点径或查把找失笨败的踢结点便,实箭际上舅这些侧结点产不存赤在,高指向雁这些罪结点弹的指扬针为捆空)猛。B-树定义第九亩章替查找(3减)每个谋非根谋结点敞中所剩包含宅的关哗键字示个数n满足-1等≤n≤m-海1,即每弹个非号根结从点至扔少应支有徒个关显键字价,至揉多有m-导1个关摘键字茎。因据为每俩个内著部结错点的榨度数卷正好喘是关夏键字太数加1,故森每个曲非根密的内颂部结锐点至丧少有吴棵伍子树系,至连多有m棵子债树。(4广)如果耀树非伤空,瘦则根袋至少游有1个关糟键字颂,所否以如皂果根悦不是笨叶结督点,搭则至摆少有遇两棵毫子树例。最估多有m-凉1个关队键字托,所盯以最衡多有m棵子芽树。第九厌章踩查找图9.匹6一棵4阶B-树返回第九浮章猛查找9.踩4.摔1散列遥法散列快法就佛是也促称为误哈希手查找(H挣as衡he织d漆se删ar渐ch功)或杂卖凑法面。散列传法的强核心灾思想鞭是将晌每个趁记录瓜的地图址与块该记折录的梁关键迫字之区间建塘立某如种函达数关窜系,究可直钉接由颠关键抗字查最找到谅该记旗录,妻根据赌关键糊字求俘存储嫌地址掏的函铺数称岭为散骂列函刃数,馅又称唐为哈斗希函拳数(Ha鼓sh舞ed形F同un携ct杆io绵n),按散奇列存虫储方帜式构观造的切动态推表又祸称散次列表(h导as矛he付d浙ta笛bl印e)。第九讲章闷查找设有栗关键旬字为1,3,7,12,15的五使个记推录,督定义掌一个押散列论函数指为:h(背k)栏=(赞k告mo陵d谅m)誓+1式中k为关排键字卸,mo融d表示惯除法错取余肝数的葛运算拌,m为一坏项规荐定的待整数阅。假设首在此广我们虚取m=脱7,则按炼这五参个关教键字东计算秒出的社函数克值为虾:h(怪1)弦=2史,h呈(3德)=多4,竿h(滔7)淹=1剖,h(漆12未)=夫6,杂h(灶15恐)=抄2第九雀章盛查找图9.你7散列法可能粮由不蹦同的陕关键宾字计触算出蕉相同排的散姓列函塘数值冠来,仿例如巩此例线中h(番1)和h(艇15挪)都等挣于2,也同就是或遇到磁了不年同记贵录占抖用同配一地急址单沙元的养情况谁,这晓种情洗况称突为发炕生了础冲突(co辱ll愿is辛io谋n)。第九撒章雁查找散列查是一颠种重企要的娃存储则方法借,又居是一取种查罚找方笼法。应用垃散列可法存何储记葵录的萌过程律是对梢每个予记录晋的关湖键字灯进行赖散列烧函数研的运龙算,蹲计算摆出该税记录吃存储渗的地棕址,臭并将侍记录年存入架此地者址中哈。查找朽一个滚记录垫的过泼程与稍存储局记录姓的过牵程一幅样,茧就是俊对待易查找吊记录心的关哪键字笛进行情计算典,得潮到地打址,抢并到抚此地养址中勺查找两记录有是否树存在撕。第九罪章次查找9.葵4.侧2散列架函数坟构造盼方法1.直接稍定址浩法:直接伞取关匠键字廊本身肺或者顽关键杏字加妖上一节个常帮数作萌为散肿列地惑址。2.数字胜分析崇法:又称脊为数炒字选妨择法升。适阵用于劝所有船关键鸟字事谷先都符知道委,并什且关毯键字越的位竖数比匀散列闸地址延的位括数多摇的情池况,照在这辰种情兰况下岩,可按将各是个关炮键字文列出授,分妨析它阅们的讨每一子位数馋字,绍舍去铲各关躁键字松取值锣比较形集中领的位苍,仅删保留辅取值龄比较桶分散凳的位侧作为菜散列堡地址橡。第九汤章露查找数字史分析辰法例含子第九烛章糠查找3.除留总余数茎法:腿这是荐一种乐最简青单也必最常务用的彼构造恋散列舌函数宪的方抖法,域前面役介绍湿的散跃列函壳数:h(探k)惨=(纽奉k案mo潜d缠m)待+1就是拨采用嫁这种平方法章。这辉种方草法关扮键在虎于m的选菊择,姻选定m值后厅就可以以决迹定存户储地倡址的皆数目难了。4.折叠屿法:折叠猪法是撒将关削键字尽按要盛求的归长度扰分成矿位数蚕相等尽的几餐段,汉最后欠一段掉如不玩够长坦可以跟短些绑,然捡后把冲各段岭重叠吨在一肿起相萌加并斜去掉晌进位闭,以林所得邮的和箩作为取地址继。第九秘章胸查找9.践4.擦3处理匆冲突即的方巩法1.开放医地址便法:开放昼地址稻就是堡表中肥尚未迫被占纤用的饿地址宴,当别新插办入的昂记录波所选倦地址洗已被繁占用霸时,卫即转呆而寻浩找其心它尚荡开放浑的地快址。开放门地址恳法又白称为涂闭散室列表恩处理裕冲突恭的方拉法。宵散列鱼表按库结构派形式牌可分橡成开仰散列蔑表和胜闭散欣列表年,闭喇散列伶表的懂结构速是一邻个向抖量,也就浑是一捏维数以组,仅表中纯记录暮按关对键字速经散宝列函是数运玩算所晨得的白地址停直接纱存入纸数组溉中。当在鞋闭散垫列表忽上发读生冲附突时产,必是须按输某种版方法业在散婆列表漂中形轮成一额个探舟查地蜘址序朵列,泽沿着项这个爆探查恩地址闯序列箩在数崭组中西逐个买查找镜,直面到碰得到无盛冲突跃的位板置为泰止,片并放壤入记很录。第九辜章晃查找形成选探查杆地址览序列段最简端单的垮方法店是线块性探抖测法观,设炒散列雪函数悠为H,闭散革列表绘一维放数组返的容晚量为m,对关丢键字k,计算讽出的龟地址恶为d=虑H(锹k)。线性裁探测陪法的骂基本扯思想锻是沿挖着散驰列表撕顺序忆向后界探查滴,直忠至找昼到开汽放地熊址为建止,跑如到辛达表朵末端欺仍未成找到究开放寸地址差,则岂将表夸看成秩是循尤环的械,返璃回到丸表的洽首端镜再向遥后找谎,只称要尚妨有开肤放地霸址最贩终总嗓可以赚找到雷。线性堂探测陶法对悉应的敌探查险地址您序列搜为d+丘1,d+丛2,……暗m,名1,差……阳,d丸-1。探查莲地址校序列甘对应屯的计臂算公事式为僚:di=(樱H(利K)歉+i催)落mo室d沫m括(1贿≤i忆≤m灯-1宋)第九片章恶查找例如锦,已许知一降组关芦键字k1澡~k套5,已计伞算出轧各关旁键字惕的散准列函垃数值誉为:H(愁k1讨)=磁3,昼H候(k幅2)都=5飞,忧H清(k梁3)拼=1抓,品H旱(k拥4)湖=3膛,符H抱(k需5)克=3,总记咬录个指数为5,开毛辟的治一维锁数组狐长度虽可以扯比实鼓际用眼的存镇储单巩元多度一些罪,取m=钉9。第九灭章摊查找图9.忆9开放热地址穴的线衫性探缩慧测第九浮章赤查找二次租探测或法二次坛探测冬法的晴基本表思想铃是:晃生成浪的探蓄查地叹址序精列不护是连鼓续的伐,而袭是跳心跃式丈的。港二次蒸探测矮法对誓应的累探查凶地址值序列杠的计顿算公筛式为愤:di=位(H餐(k涌)+剑i)疤m贡od粮m其中i=12,-12,22,-22­,…约…j2,-j2,(j≤m/傲2)。第九著章把查找图9.尘9开放体地址司的二络次探丛测第九玻章慢查找2.链接任表法伤:又称势为开每散列景表处施理冲膛突的重方法结。设散同列函轮数为H(睡k),函数铸值范迷围为0~m-恼1,开散报列表幅的结元构可刺以设循计成火一个肤由m个指添针域槽构成搭的指帽针数泪组T[为m],初始西状态毅都是盐空指重针。激其中习每一莲个分桌量对雾应一沃个单获链表被的头毛指针仪,凡誉散列盒地址干为i的记将录都层插入恩到头臣指针预为T[命i]的链使表中给。每蹦一个恰这样忠的单烛链表巡寿称为淹一个缺同义枣词表抹。链奋接表神法解屈决冲籍突的珍方式州,就被是将重所有喝关键补字为仿同义芹词的替记录狡链接搞在同耽一个锹单链磁表中涝。例如影前面层的例分子改叔用链宗接表弃法如遍图9.脆10所示盯。第九励章族查找图9.吹10链接勾表法第九驶章史查找9.若4.陡4散列章法的进查找刮运算散列佛表的虽目的箩主要辆是用尾于快漫速查塌找。在建瓣表时测采用指何种笋散列使函数救及何质种解白决冲犯突的严办法迁,在鸦查找棉时,况也采塌用同舟样的捷散列锣函数芒及解贯决冲男突的传办法遣。假戴设给哨定的暂值为k,根据羊建表态时设掏定的纷散列咐函数H,计算纲出散溪列地家址H(辽k),如果软表中释该地神址单戴元为豆空,漠则查尝找失抚败;帐否则朵将该摔地址风中的保关键田字值开与给逮定值k比较大,如漏果相纵等则殖查找安成功赶,否抱则按吃建表比时设刺定的唐处理姑冲突蝴的方杆法找尺下一款个地物址,览如此老反复驾下去毕,直选到某劣个地钢址单旅元为堪空(堤查找赢失败茎)或且与关忠键字打值比青较相扭等(孕查找猾成功削)为然止。第九仆章颗查找设有悬一批扰正整碍数关牛键字颜,采淋用除罗留余青数的陕散列劳函数支和线留性探惕测开奋放地巩址的响办法线解决边冲突拖,存划放入猪长度寨约为消该批洗数据帜总数1.琴5倍的南一维教数组A中,招因为嘱关键凝字值臭均大案于0,所标以规膜定数慰组元肆素置0表示殖开放井地址原。要求苍当查制找成府功时辫,给朽出与沿该关耽键字驻相应苏的地吸址,款查找纸失败里时则翼将该铲关键扁字插直入开司放地杜址单贵元并蛇输出口此地窄址。你待查柳找的泻关键腔字为k,m值取役一个老接近旅数组女长度固的质私数,扶则这姐种散吓列法油的查艇找算并法如立下:第九看章壶查找查找算法in汁tHa顿sh吉in竖g有(in军tA,及m,魔k){in厕ti;锡/彩*为散屈列函佳数值世*/i=煌(k糊m慨od零m借)+蹲1wh砖il臂e忠(A万[i称]!浮=k依&勺&策A[涝i]竖>0朝){if莫(栽i=畏=m旗)i=胡1;el勿sei+料+;范/*见i未到纯达表既末端吓则后青移一喊个单剥元进捡行线戏性探斜测,缩慧否则诉返回附到表研首端特继续圾探测深,直讯至找防到待拼查关杯键字k或者纯遇到明开放然地址绿为止霞*/}第九腥章钩查找查找算法显续}if纵(A脸[i惩]=仍=0碎)A[塌i]赢=k扮;re悲tu渠rn撒(戚i)慢;}返回第九冰章光查找例9.戚1设有偶一组余关键谈字{1株9,嫁01饥,2罪3,辩14度,5燃5,鸽20枪,9括4,委27坝,6驳9,衫11嚷,1邻0,猾77},采叔用哈凤希函呢数:H(k)=k误m干od顷1臭3。采用弟开放贸地址覆的线普性探凭测法办解决么冲突强,试级在0~19的散拿列地没址空牺间中莫,对樱该关扒键字朗序列禾构造她散列熄表。解:际依题阴意m=昌19,得到局线性蜻探测宏法对扩应的众探查舒地址责序列吐计算联公式租为:di=(练H(若k)细+j惕)候mo清d膊19由;役j=盼1,注2,…冲…,样19其计宗算函河数如团下:H(辞19逝)=察19芦m律od骄1雨3=悔6H(六01杰)=涝01按m番od查1识3=蚀1第九扒章探查找H(查23洗)=升23哭m厘od帐1渣3=齿10H(补14讲)=任14除m许od歪1牺3=建1霜(冲突)H(景14膀)=伸(1创+1类)击mo混d圣19宽=2H(萍55冷)=惑55推m型od侧1摊3=亡3H(眼20消)=床20遗m委od亡1旗3=陈7H(铅94游)=谊94mo则d屑13馅=6避(冲突)H(青94)=腐(6叨+1挨)滑mo讯d伪19笛=7毒(冲突)H(做94)=喊(6墙+2量)胃mo勾d19划=9H(塔27布)=原27糟m邮od吹1葛3=包1(冲突严)H(侄27护)=趴(1明+1锻)僚mo捕d端19饮=2汽(冲突)第九涉章悦查找H(刷27祖)=厘(1段+2杂)黎mo底d撑19酒=3愚(冲突)H(副27世)=凭(1纯+3挠)肉mo给d复19币=4H(仓69善)=浇69mo这d晴13午=3磁(冲突)H(很69隔)=狼(3+版1)半m盛od销1驰9=圆4限(冲突)H(监69舰)=强(3+上2)裂m允od粒1彩9=志5H(下11奔)=榨11目m背od杯1箩3=弹11H(滴10唱)=隐10嫂m丧od菊1助3=晴10下(冲突)H(叠10搅)=级(1丛0+伴1)仙m绑od愉1瓦9=敌11拍(冲突)H(新10况)=策(1味0+民2)氧m贪od户1友9=冶12H(遭77背)=盼77券m展od臣1住3=冬12案(冲突)H(士77宫)=弓(1必2+绵1)闻m觉od瓣1僚9=羡13第九否章揭查找图9.律11例9.萌1地址述分配第九店章统查找例9.胳2编写翻一个样函数骑,利踢用二情分查克找算其法在催一个倒有序捞表中寨插入匹一个丝式元素x,并保锡持表谅的有秘序性职。本题灵的解呼题思沫想是使,先闻在有败序表r中利号用二委分查近找算脆法查僚找关穴键字朝值等处于或艇小于x的结边点,mi中d指向某正好劳等于x的结纤点或lo嗓w指向雀关键轻字正雹好大悬于x的结逃点,束然后普采用蚊移动咏法插园入x结点荣即可余。第九针章算查找例9.涨2算法in裙se防rt街(s则ql宿is拾tr,in帜tx,in真tn){in抹tlo交w=签1,罚hi慢gh耍=n绑,m寺id剑,i律,f第in彼d=臂0;wh嘴il匙e(势l梦ow婆<=谢hi血gh我&茂&堂!f半in退d){mi神d=滋(l微ow到+h双ig猴h)靠/2息;if大(x圣<r从[m善id怠].舒ke克y)hi红gh先=m叨id胜-1秋;el虎se蒸i彻f孟(x雹>r拒[m鞋id娇].距ke坊y)lo谁w=摧mi勺d+圆1;el倦se第九贵章事查找

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论