查找算法的分析和应用

本文详细介绍了分块查找、折半查找和散列查找三种不同的查找算法。通过实例展示了每种方法的索引构建、查找过程以及ASL(平均查找长度)的计算,包括成功和失败情况。同时,讨论了线性和拉链法解决散列冲突的方法,并提出了对散列表的实现挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

分块查找

5.1.1自己设计一个分块查找的例子,不少于15个数据元素,并建立分块查找的索引

5.1.2基于上述例子,计算查找成功的ASL、查找失败的ASL

折半查找

5.2.1自己设计一个折半查找的例子,不少于10个数据元素,画出对应的查找分析树

5.2.2基于上述例子,计算查找成功的ASL、查找失败的ASL

散列查找

 自己设计一个散列表,总长度由你决定,并设计一个合理的散列函数,使用线性探测法解决冲突

基于上述散列表,设计不少于10个元素的插入序列,依次插入散列表,画出散列表最终的样子(插入过程至少发生4次冲突)

基于上述例子,计算查找成功的ASL、查找失败的ASL

【代码能力强的同学,尝试实现上述散列表的数据结构定义,并实现查找、插入、删除三个基本操作】

 自己设计一个散列表,总长度由你决定,并设计一个合理的散列函数,使用拉链法解决冲突

基于上述散列表,设计不少于10个元素的插入序列,依次插入散列表,画出散列表最终的样子(插入过程至少发生4次冲突)

基于上述例子,计算查找成功的ASL、查找失败的ASL

【代码能力强的同学,尝试实现上述散列表的数据结构定义,并实现查找、插入、删除三个基本操作】


(51条消息) 【数据结构-查找】1.通俗易懂讲解 —— 顺序-折半-分块查找_折半查找分块查找的asl_浙桐的博客-CSDN博客

分块查找

5.1.1自己设计一个分块查找的例子,不少于15个数据元素,并建立分块查找的索引

5.1.2基于上述例子,计算查找成功的ASL、查找失败的ASL

ASL成功/失败 = L1+Ls =( s^2+2s+n)/2s = (36 + 12 + 18)/2*6 = 5.5

当s=根号n 即 s = 根号18 = 4时,ASL最小 = 根号n+1 = 5

折半查找

5.2.1自己设计一个折半查找的例子,不少于10个数据元素,画出对应的查找分析树

有序序列{7,10,13,16,19,29,32,33,37,41,43}

5.2.2基于上述例子,计算查找成功的ASL、查找失败的ASL

ASL成功 =(1x1 + 2x2 +3x4 +4x4 )/11 =  3 (圆形结点)

ASL失败 = (3x4 +4x8)/12 = 11/3 (方形结点)

散列查找

 自己设计一个散列表,总长度由你决定,并设计一个合理的散列函数,使用线性探测法解决冲突

线性探测法属于开放定址法 

基于上述散列表,设计不少于10个元素的插入序列,依次插入散列表,画出散列表最终的样子(插入过程至少发生4次冲突)

基于上述例子,计算查找成功的ASL、查找失败的ASL

查找失败ASL = (1 + 13 + 12 + ……+2 )/13 = 7 

【代码能力强的同学,尝试实现上述散列表的数据结构定义,并实现查找、插入、删除三个基本操作】

 自己设计一个散列表,总长度由你决定,并设计一个合理的散列函数,使用拉链法解决冲突

基于上述散列表,设计不少于10个元素的插入序列,依次插入散列表,画出散列表最终的样子(插入过程至少发生4次冲突)

基于上述例子,计算查找成功的ASL、查找失败的ASL

【代码能力强的同学,尝试实现上述散列表的数据结构定义,并实现查找、插入、删除三个基本操作】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值