有一个2000项的表,欲采用分块查找法进行查找- -!

Nonexistent 2009-10-13 08:59:38
有一个2000项的表,欲采用分块查找法进行查找- -!
(1)每块的理想长度是多少?(假设每块的长度相等)
(2)分成多少块最为理想?
(3)平均查找长度是多少?
我答的是,40或50,
答案是:(1)45(2)45

(3)小题是46 ? 怎么算的啊?? 再给点注解就更好了:)
...全文
1179 8 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
引用好几次了,呵呵。有意思。
其实这样的题目真的没有太多的意思。

正如你所言。
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]

嗯!

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧