社区
数据结构与算法
帖子详情
有一个2000项的表,欲采用分块查找法进行查找- -!
Nonexistent
2009-10-13 08:59:38
有一个2000项的表,欲采用分块查找法进行查找- -!
(1)每块的理想长度是多少?(假设每块的长度相等)
(2)分成多少块最为理想?
(3)平均查找长度是多少?
我答的是,40或50,
答案是:(1)45(2)45
(3)小题是46 ? 怎么算的啊?? 再给点注解就更好了:)
...全文
1179
8
打赏
收藏
有一个2000项的表,欲采用分块查找法进行查找- -!
有一个2000项的表,欲采用分块查找法进行查找- -! (1)每块的理想长度是多少?(假设每块的长度相等) (2)分成多少块最为理想? (3)平均查找长度是多少? 我答的是,40或50, 答案是:(1)45(2)45 (3)小题是46 ? 怎么算的啊?? 再给点注解就更好了:)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Nonexistent
2009-10-14
打赏
举报
回复
看了两位老师的,还是晕呼``~
诂计导论里没有把这个当做重点讲解。。 但是居然在一张卷纸的应用题里出了题。。。 昏!
绿色夹克衫
2009-10-14
打赏
举报
回复
以我的理解,大概是需要先找到在哪个分块里,再从该块中找出具体的元素!
以2000项为例,假设分为2000/k块,每块大小为k的话
那么index在0 - k-1的项,需要先用1次找到所在的块,然后用1-k次,找到具体的元素
index在k - 2k-1,需要先用2次找到所在的块,然后用1-k次,找到具体的元素
......
index在2000-k-1999,需要先用2000/k次找到所在的块,然后用1-k次,找到具体的元素
求一下所有查找次数的和
k*1+(1+2+3+....k)(0 - k-1)
k*2+(1+2+3+....k)(k - 2k-1)
......
k*(2000/k) + (1+2+3+....k)(2000 - k-1999)
=k*(1+2+3+....2000/k)+(1+2+3+....k)*(2000/k)求一下最小值情况下的k就行了
其实说到分块,如果只是为了查找,倒不如10,9,8,7,6,5,4,3,2,1这样来分,平均效率会高一些
penglixing
2009-10-13
打赏
举报
回复
《数据结构书》上有,下本书看看吧
Nonexistent
2009-10-13
打赏
举报
回复
[Quote=引用 1 楼 penglixing 的回复:]
(1)2000/块数 大于等于它的取最小整数
(2)sqrt(2000)+1
[/Quote]
不是很明白。
penglixing
2009-10-13
打赏
举报
回复
(1)2000/块数 大于等于它的取最小整数
(2)sqrt(2000)+1
黄舒颖 咸丫蛋
2009-10-13
打赏
举报
回复
引用好几次了,呵呵。有意思。
其实这样的题目真的没有太多的意思。
正如你所言。
ASL bs=1/2(n/s+s)+1
其中s指的是s块。
2000 分成s块
顺序查找到相应的块平均需要1/2*(s+1)时间,
每个块中有n/s项
顺序找到这个块中相应的项需要1/2*(n/s+1)时间
总的是二者和
再后面的就是导论上写的了。
[Quote=引用 5 楼 nonexistent 的回复:]
引用 3 楼 penglixing 的回复:
《数据结构书》上有,下本书看看吧
把书翻烂了, 不好意思,书上真的没有细讲,导论里只大概讲了下它的原理 就是证明它的性能高于顺序查找而低于二分查找。
给出了一个公式,也没讲解,看不懂。。
“ASL bs=1/2(n/s+s)+1 ;其平均查找长度等于二阶段各自的查找长度之和。若每块含S个元素,且第一阶段采用顺序查找,则在等概率假定下,分块查找的平均查找长度为这个公式。
其中n为顺序表中的数据元素数目。当S取sqrt(n)时,ASL bs达到最小值sqrt(n)+1。”
就这样讲的。。。根本弄不明白算法啊?
请高人!讲解! 在线恭候!
我理解的是 题意给定了假定每块长度相等 那只有每块40或50 45长度和45块 45*45不是大于>2000(n)有效长度了吗?
另外(3)小题, 46到底怎么算的啊?
哪位高人给细讲下,加分了!。 拜托!
[/Quote]
Nonexistent
2009-10-13
打赏
举报
回复
[Quote=引用 3 楼 penglixing 的回复:]
《数据结构书》上有,下本书看看吧
[/Quote]
把书翻烂了, 不好意思,书上真的没有细讲,导论里只大概讲了下它的原理 就是证明它的性能高于顺序查找而低于二分查找。
给出了一个公式,也没讲解,看不懂。。
“ASL bs=1/2(n/s+s)+1 ;其平均查找长度等于二阶段各自的查找长度之和。若每块含S个元素,且第一阶段采用顺序查找,则在等概率假定下,分块查找的平均查找长度为这个公式。
其中n为顺序表中的数据元素数目。当S取sqrt(n)时,ASL bs达到最小值sqrt(n)+1。”
就这样讲的。。。根本弄不明白算法啊?
请高人!讲解! 在线恭候!
我理解的是 题意给定了假定每块长度相等 那只有每块40或50 45长度和45块 45*45不是大于>2000(n)有效长度了吗?
另外(3)小题, 46到底怎么算的啊?
哪位高人给细讲下,加分了!。 拜托!
Nonexistent
2009-10-13
打赏
举报
回复
[Quote=引用 3 楼 penglixing 的回复:]
《数据结构书》上有,下本书看看吧
[/Quote]
嗯!
数据结构-【
分块
查找
】多元函数条件极值求解最理想块长
多元函数条件极值求解最理想块长1 平均
查找
长度2 问题描述3 问题求解
分块
查找
,又称索引顺序
查找
,它吸取了顺序
查找
和折半
查找
各自的优点,既有动态结构,又适于快速
查找
。具体如何对待
查找
序列
进行
分块以及块内的
查找
(顺序
查找
或二分
查找
),就不再赘述了。 1 平均
查找
长度 平均
查找
长度是衡量
查找
算
法
效率的最主要的指标。 若将
一个
长度为n的
查找
序列分为b个块,每个块内包含s
实现
分块
查找
的算
法
输出顺序
表
(8,14,6,9,10,22,34,18,19,31,40,38,54,66,46,71,78,68,80,85,100,94,88,96,87)中
采用
分块
查找
的方
法
查找
(每块的块长为5,共有5块)关键字46的过程。#include
#define MAXL 100 //定义
表
中最多记录个数 #define MAXI 20
查找
(一):静态
查找
表
(顺序
查找
、折半
查找
、
分块
查找
)
作为数据结构的课程笔记,以便查阅。如有出错的地方,还请多多指正! 注:C++忘得太厉害了。。算
法
先用C实现,等之后复习了再改成C++ 目录基本概念顺序
查找
Sequential Search
查找
过程算
法
实现性能分析ASL总结折半
查找
Binary Search
查找
过程算
法
实现性能分析判定树ASL总结*补充:证明在每个元素的搜索概率相等时,二分
查找
效率最高
分块
查找
/ 索引顺序
查找
查找
过程算
法
实现性能分析ASL
查找
方
法
比较 基本概念
查找
表
(Search Table):由同一类型的数据元素(或记录)构成
数据结构折半
查找
例题_数据结构第9章例题与答案
第九章集合一、选择题1.若
查找
每个记录的概率均等,则在具有n个记录的连续顺序文件中
采用
顺序
查找
法
查找
一个
记录,其平均
查找
长度asl为()。【北京航空航天大学
2000
一、8(2分)】a.(n-1)/2b.n/2c.(n+1)/2d.n2.对n个元素的
表
做顺序
查找
时,若
查找
每个元素的概率相同,则平均
查找
长度为()【南京...
算
法
与数据结构之集合
重点知识 1. 在各种
查找
方
法
中,平均
查找
长度与结点个数n无关的
查找
方
法
是哈希
查找
。 2. 动态
查找
表
和静态
查找
表
的重要区别在于前者包含有插入和删除运算,而后者不包含这两种运算。 3. 在等概率的情况下,对具有n个元素的顺序
表
进行
顺序
查找
,
查找
成功(即
表
中有关键字等于定值K的记录)的平均
查找
长度为(n+1)/2;
查找
不成功(即
表
中无关键字等于给定值K的记录)的平均
查找
长度为(n+1)。 4. 顺序
查找
n个元素的顺序
表
,若
查找
成功,则比较关键字的次数最多为n次,当使用监视哨时,若
查找
失败,则比较关键字
数据结构与算法
33,028
社区成员
35,337
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章