• 常见的哈希算法与碰撞算法


    Adblocker
     
     
     
     

    常见的哈希算法与碰撞算法

    哈希算法

    • 直接定址法:直接以关键字k或者k加上某个常数(k+c)作为哈希地址。
    • 数字分析法:提取关键字中取值比较均匀的数字作为哈希地址。
    • 除留余数法:用关键字k除以某个不大于哈希表长度m的数p,将所得余数作为哈希表地址。
    • 分段叠加法:按照哈希表地址位数将关键字分成位数相等的几部分,其中最后一部分可以比较短。然后将这几部分相加,舍弃最高进位后的结果就是该关键字的哈希地址。
    • 平方取中法:如果关键字各个部分分布都不均匀的话,可以先求出它的平方值,然后按照需求取中间的几位作为哈希地址。
    • 伪随机数法:采用一个伪随机数当作哈希函数

    解决碰撞算法

    • 开放定址法
      • 开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。
    • 链地址法
      • 将哈希表的每个单元作为链表的头结点,所有哈希地址为i的元素构成一个同义词链表。即发生冲突时就把该关键字链在以该单元为头结点的链表的尾部。
    • 再哈希法
      • 当哈希地址发生冲突用其他的函数计算另一个哈希函数地址,直到冲突不再产生为止。
    • 建立公共溢出区
      • 将哈希表分为基本表和溢出表两部分,发生冲突的元素都放入溢出表中。
  • 相关阅读:
    HDU 1312 Red and Black(经典DFS)
    POJ 1274 The Perfect Stall(二分图 && 匈牙利 && 最小点覆盖)
    POJ 3041 Asteroids(二分图 && 匈牙利算法 && 最小点覆盖)
    HDU 1016 素数环(dfs + 回溯)
    HDU 1035 Robot Motion(dfs + 模拟)
    vjudge Trailing Zeroes (III) (二分答案 && 数论)
    openjudge 和为给定数(二分答案)
    图的存储
    二分查找
    快速选择算法
  • 原文地址:https://www.cnblogs.com/lanqingzhou/p/13591132.html
Copyright © 2020-2023  润新知