jame23 发表于 2007-12-18 17:45

小女愚笨跪求两题,多谢各位精英!

1.设某字典组成如下:
D={016, 087, 154, 170, 275, 426, 503, 509, 512, 612, 653, 677, 703, 765, 897, 908}
依次顺序表示在内存中,现用二分法的方法查找字典中是否有元素612,问需要进行多少次比较才能得到结论 每次选择的比较对象是什么元素?
2.为了正确处理开地址散列表元素的删除,需要对每个字典中元素增加一个删除标志位,试用双散列函数法解决碰撞,散列函数为h1(k)和h2(k),写一个从散列表中删除一个关键码k的算法.

missiyou 发表于 2007-12-20 21:31

这个二个题目用不着算法去写,好像只是让人知道你的解题思路.
第一题,你要自己按照算法来把数据描述出来.
第二题,我还不怎么懂双散列什么意思.
好像就是,呵呵,有点懂了,
算法呀,感觉就是先去标志.然后搜索,找到了删除

zerozou 发表于 2007-12-21 19:32

用c写出代码来吧
不是很难!
你的第二个问题我不懂

蓝调 发表于 2007-12-22 10:38

第一题

# include <stdio.h>
void main()
{
int a[16]={16,87,154,170,275,426,503,509,512,612,653,677,703,765,897,908},
     i,x,top,mid,bot;
printf("Please input a number x:");   /*输入要找的数*/
scanf("%d",&x);
top=0;
bot=15;
do
{
  mid=(top+bot)/2;
  if(x<a[mid])
  bot=mid-1;
  else
  top=mid+1;
}
while(x!=a[mid] && top<=bot);
if(x==a[mid])
printf("Yes");
else
printf("No");
}

yudeliao315 发表于 2007-12-22 22:57

[em03]  哦~~~~
我看明白啦。
原来二分法的算法是这样的啊!!
多谢4楼的朋友[em19]

yuemao 发表于 2007-12-23 11:08

强啊.

三月里de小雨 发表于 2007-12-24 20:55

支持一下~~~~

康elon 发表于 2008-5-24 15:20

支持

支持下

页: [1]

编程论坛