11/2 哈希表查找成败平均次数计算

散列表的装填因子 定义:α= 填入表中的元素个数 / 散列表的长度

α是散列表装满程度的标志因子。由于表长是定值,α与“填入表中的元素个数”成正比,所以,α越大,填入表中的元素较多,产生冲突的可能性就越大;α越小,填入表中的元素较少,产生冲突的可能性就越小
通常,只要a取的合适(一般取0.7-0.8之间),哈希表的平均查找长度就会是常数也就是O(1)级别的。

线性探测和二次探测必须考虑载荷因子,超过0.7-0.8就增容,增大效率,(以空间换时间)

  • 查找成功: 查找次数/数据个数
  • 查找失败: 探查次数/散列表的表长。

问题主要是查找不成功的次数那里,不是0-r-1的区间循环,而是整个哈希表内循环,只计算前r个地址的不成功次数。

数据结构哈希函数,求线性探测法查找失败时的平均查找长度

11/2 哈希表查找成败平均次数计算
因为是mod11,所以查找失败总共有11种情况。也就是 (3*k)%11的余数是0-10的时候。
逐个看下就行了。
余数为:
11/2 哈希表查找成败平均次数计算

平方探测

https://blog.****.net/m0_38015368/article/details/78694496

一个n 阶对称矩阵A的下三角部分按行优先(row major)顺序压缩存储在一维数组B中,其中B[0]存储矩阵中第1个元素a11, 则元素aij (i ≤ j)存放在

对称矩阵

在一个n阶方阵A中,若元素满足下述性质:

1.aij=aji
2.0≤i,j≤n-1
则称A为对称矩阵。

对称矩阵的压缩存

对称矩阵中的元素关于主对角线对称,故只要存储矩阵中上三角或下三角中的元素,让每两个对称的元素共享一个存储空间。这样,能节约近一半的存储空间。

①按"行优先顺序"存储主对角线(包括对角线)以下的元素

即按a00,a10,a11,……,an-1,0,an-1,1…,an-1,n-1次序存放在一个向量sa[0..n(n+1)/2-1]中(下三角矩阵中,元素总数为n(n+1)/2)。

其中:

sa[0]=a00,

sa[1]=a10,

……,

sa[n(n+1)/2-1]=an-1,n-1

②元素aij的存放位置

aij元素前有i行(从第0行到第i-1行),一共有:

1+2+…+i=i×(i+1)/2个元素;

在第i行上,aij之前恰有j个元素(即ai0,ai1,…,aij-1),因此有:

sa[i×(i+1)/2+j]=aij

③aij和sa[k]之间的对应关系:

  • 若i≥j,k=i×(i+1)/2+j
    0≤k<n(n+1)/2

  • 若i<j,k=j×(j+1)/2+i
    0≤k<n(n+1)/2

令I=max(i,j),J=min(i,j),则k和i,j的对应关系可统一为:

k=i×(i+1)/2+j0≤k<n(n+1)/2

(3)对称矩阵的地址计算公式

LOC(aij)=LOC(sa[k])

=LOC(sa[0])+k×d=LOC(sa[0])+[I×(I+1)/2+J]×d

通过下标变换公式,能立即找到矩阵元素aij在其压缩存储表示sa中的对应位置k。因此是随机存取结构。

【例】a21和a12均存储在sa[4]中,这是因为

k=I×(I+1)/2+J=2×(2+1)/2+1=4

参考:https://baike.so.com/doc/279162-295488.html
11/2 哈希表查找成败平均次数计算11/2 哈希表查找成败平均次数计算
11/2 哈希表查找成败平均次数计算
11/2 哈希表查找成败平均次数计算

关于拉链法查找失败长度

拉链法解决冲突的做法是:将所有关键字为同义词的结点链接在同一个单链表中。若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组t[0…m-1]。凡是散列地址为i的结点,均插入到以t为头指针的单链表中。t中各分量的初值均应为空指针。在拉链法中,装填因子α可以大于1,但一般均取α≤1。11/2 哈希表查找成败平均次数计算
11/2 哈希表查找成败平均次数计算
一个10阶对称矩阵A的下三角部分按行优先(row major)顺序压缩存储在一维数组B中,则数组B的大小应为