词条 | 开放地址法 |
释义 | 1.冲突处理方法一---开放地址法 当发生地址冲突后,求解下一个地址用: ND =( D+di)%m i=1,2,…,k(k<= m-1) 其中: m为哈希表长度,di为增量序列。增量序列的不同取法,又构成不同的开放地址法。 (1)线性探测再散列 D = H(key); ND = (D+di)%m; di取1,2,3,……,m-1 线性探测再散列处理冲突的基本思想:若数据元素在存储地址D发生冲突,则放到存储地址(D+1)%m;若又发生冲突则放到存储地址(D+2)%m;若再发生冲突则放到存储地址(D+3)%m;……;直到碰到第一个为空的存储地址(D+i)%m,则将数据元素存放在该存储空间。 (2)二次探测再散列 D = H(key); ND = (D+di)%m; di取1*1,-1*1,2*2,-2*2,……,K*K,-K*K (K≤m/2) (3)双散列法 首先使用第一个散列函数H1(key)及逆行那个散列,一旦发生冲突,则使用第二个函数H2(key)计算改项到达下一个存储地址的增量,其取值p和key有关,范围在1和m之间,并且与m互质的正整数。 D = H1(key); p = H2(key); ND = (D+p)%m; 值得提醒的是,对利用开放地址法查了冲突所产生的哈希表中删除一个元素,不能简单地直接删除,因为这样将截断其它具有相同哈希地址的元素的查找地址,所以应设定一个特殊的标志以表明该元素已被删除。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。