哈希链表存储比较失败的查找长度
㈠ 哈希函数那块儿的失败查找长度怎么算啊
查找失败的话,就是要从失败的位置开始,找到可以插入位置的次数。查找失败的位置记作第一次,然后顺序往后找(顺序往后,如果找到的话,失败的次数就是从查找失败位置到找到可插入位置的总长度;如果到表尾还没找到空插入,就返回到表头重新找,直到找到可插入位置的总次数)。找出所有关键字查找的失败次数,然后做和,除以表长就是了。[]
㈡ 数据结构哈希函数。求线性探测法查找失败时的评论查找长度,详解急。
因为是mod11,所以查找失败总过有11中情况。也就是 (3*k)%11的余数是0-10的时候。
逐个看下就行了:
余数为:
0: 查找1次就会发现错误(找到第一个为空的,就说明不在这个表里)
1: 2次
3: 8次
4: 7
5:6
6:5
7:4
8:3
9:2
10:1
所以结果是:(2 + 8 + 7 +6 +5 +4 + 3 +2 + 1) / 11 = 3.4545
㈢ @数据结构大神,(3)的失败后的查找长度为啥是n+1求解释!
首先,这里的顺序查找算法应该是包含哨兵的算法(就是令数组下标为0的元素的值为你要查找的关键字)。查找失败意味着n个元素都比较过了,接下来会比较下一个元素,即最后的哨兵元素(注意是从后往前查找的),然后跳出查找的循环语句。所以一共比较了n+1次。
平均查找长度公式是概率乘比较次数的求和。假设每个元素查找概率为1/n,而失败时每个元素都相当于比较n+1次,即查找失败时每个元素的查找长度一样,都是(n+1)/n。不算哨兵元素,一共有n个元素进行了查找,故ASL=n*(n+1/n)=n+1
㈣ 哈希表链地址查找不成功平均查找长度怎么计算
如果是拉链法,如果链表为空。就不需要判断第一个节点(因为根本没有)。线性法需要判断地址是否为空闲单元(因为这是特意留出空位来存东西的)
㈤ 关于哈希表查找不成功时的平均查找长度
我感觉你可能并没有仔细看那个博客上的讲解,实际上你的理解是对的,而博客上也是那样讲的。博客上是这样说的:
“求查找不成功时的平均查找长度,一般情况下分母为表长,但精确地讲是表长的有效位个数”
(红字部分)
注意这里的表长其实就是你说的16,而有效位个数其实就是12,博客随后还举了个字母表的例子进一步说明这个问题。
计算不成功AVL时,一定是依据具体hash函数计算的,正如你所言,虽然表长为16,但实际查找时最初只可能产生0-12一共13种结果,所以应该除的是13,你的理解是正确的。
有问题欢迎继续讨论。
㈥ 哈希表查找不成功的平均查找长度
所谓地址是指散列函数的hash值
采用线性探测再散列法处理冲突,查询时,当遇到第一个为空时才能认为是查找失败