课程:《程序设计与数据结构》
班级: 1723
姓名: 王禹涵
学号: 20172323
实验教师:王志强老师
测试日期:2018年10月
必修/选修: 必修算法
三种算法查找练习
给定关键字序列11,78,10,1,3,2,4,21试分别用顺序查找、折半查找、散列查找(用线性探查法和链地址法)来实现查找。试画出它们的对应存储形式(顺序查找的顺序表,二分查找的断定树,两种散列查找的散列表),并求出每一种查找的成功平均查找长度。其中,散列函数H(K) = K % 11.数组
1.首先在0索引处添加序列元素11
数据结构
2.在1索引处添加序列元素78
函数
3.在10索引处添加序列元素10
测试
4.在1索引处添加序列元素1,但由于1索引处已经有了元素78,发生冲突,按照线性探查法,探测下一地址,若是为空则插入,因此最终1添加到2索引处
.net
5.添加序列元素3到3索引处
设计
6.添加2到2索引处,2索引处不为空日后移一位,3索引处依然不为空,再日后移一位,最后添加到4索引处
指针
7.添加4到4索引处,发生冲突,日后移一位,添加到5索引处
blog
8.添加21到10索引处,不为空,日后移一位到0索引处,注意不是添加一个11索引处,发生冲突则日后移,直到6索引处
排序
9.最终获得哈希表,而查找每一个元素所须要的比较次数以下
10.ASL= (1 + 1 + 2 + 1 + 3 + 2 + 8 + 1 )/8 = 2.375
11.错误分析:当发生冲突时,从发生冲突的那个单元开始,按照必定的次序,从哈希表中找出一个空闲的存储单元,把发生冲突的待插入关键字存储到该单元中,从而解决冲突的发生。若是是在哈希表尾的存储单元发生了冲突,则继续从0索引处开始寻找空闲存储单元,若是没有找到空闲的存储单元,则溢出,不能凭空生出一个新的索引处
因此ASL= (1 x 6 + 2 x 2)/8 = 1.25