用空闲地址既向同义词开放,<br>又向非同义词开放:开放定址法<br>m为表长,<span class="equation-text" data-index="0" data-equation="\Delta_i" contenteditable="false"><span></span><span></span></span>为增量序列,<br>i为第i次冲突,H<span class="equation-text" data-index="1" data-equation="_i" contenteditable="false"><span></span><span></span></span>=(H(key)+<span class="equation-text" data-index="2" data-equation="\Delta_i" contenteditable="false"><span></span><span></span></span>)%m<br>
冲突就顺延:线性探测法
冲突处理值域可以大于哈希函数值域,但是不超过m
一直顺延直到匹配或为空:查找
直接删除元素会导致查找出现假失败,可以用一个<br>bool做标记表示逻辑上元素已被删除:逻辑删除<br>
造成大量堆积
同义词进行排序可以略微提高查找时的效率
令<span class="equation-text" data-index="0" data-equation="\begin{aligned}k\leq m/2,d_i=0,1,-1,\\4,-4,9,-9,...,k^2,-k^2\end{aligned}" contenteditable="false"><span></span><span></span></span>:平方探测法
只有当m是可以表示为4j+3的素数<br>才能探测到所有位置<br>
<span class="equation-text" data-index="0" data-equation="d_i=Random(i)" contenteditable="false"><span></span><span></span></span>:伪随机序列法
再散列法<br>再哈希法<br>
用备用散列函数,逐个计算地址直到不冲突为止