zoukankan      html  css  js  c++  java
  • 【数据结构·Data Structure】散列表-Hashing Table

    散列表

    散列函数

    直接地址法:H(Key) = a*Key+b

    除留余数法:H(Key) = Key%p,(p是个不大于m的最大素数)

    数字分析法:取出现概率均匀的若干位作为散列地址

    平方取中法:Key平方,取中间几位作为散列地址

    ......

    解决冲突:

    开放地址法:Hi = (H(Key)+di)%m

    线性探测:di = 0, 1, 2, ..., m-1,(能遍历表,但会造成堆积,降低查找效率)

    平方探测:di = 0, 1^2, -1^2, ..., (m/2)^2, -(m/2)^2,(m为4k+3形式的素数,不能遍历表,但可以避免出现“堆积”问题)

    再散列法:di = Hi(key)

    注:开放地址法中,删除空要和原始空区分开。因为开放地址法的查找是发现空就得出元素不存在的结论。开放地址法就是开放了相同地址元素的位置给其他地址元素,那么在查找中,如果发现一个删除空,其与原始空不区分,就会停止查找,查找不到存在的元素,出现错误。将删除空和原始空区分,在发现删除空也会继续使用开放地址法继续查找。缺点是表满时可能存在很多删除空的位置未利用,需要定期维护散列表,删除删除空。

    拉链法:相同地址的元素以链表的形式存储在该位置

    from Chu
  • 相关阅读:
    .Net中的AOP系列之《方法执行前后——边界切面》
    【信息学奥赛一本通】题解目录
    7219:复杂的整数划分问题
    1039 数的划分
    7215:简单的整数划分问题
    大整数阶乘的计算
    大数阶乘的位数和精确值计算【转】
    Window.Open详解
    在asp.net中显示PDF的方法:
    位运算技巧
  • 原文地址:https://www.cnblogs.com/chubuyu/p/15311007.html
Copyright © 2011-2022 走看看