小女愚笨跪求两题,多谢各位精英!
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的算法.
第一题,你要自己按照算法来把数据描述出来.
第二题,我还不怎么懂双散列什么意思.
好像就是,呵呵,有点懂了,
算法呀,感觉就是先去标志.然后搜索,找到了删除 用c写出代码来吧
不是很难!
你的第二个问题我不懂
第一题
# 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");
} [em03] 哦~~~~
我看明白啦。
原来二分法的算法是这样的啊!!
多谢4楼的朋友[em19] 强啊. 支持一下~~~~
支持
支持下页:
[1]
