开放地址法和拉链法(冲突处理)比较

2,386 阅读1分钟

开放地址法

发生冲突进行探查,沿探查序列进行探查。

Hi=(H(key)+di) mod m

H(key)为Hash函数,m为散列表表长,di为增量序列。

拉链法

链表头存放到一个数组中,如果发生冲突,则对表头进行插入。

拉链法优点:

  1. 冲突简单,无堆积,查找平均长度较短。
  2. 适合无法确定表长的情况。
  3. 开放地址法要去装填因子较小,拉链法装填因子可大于1。
  4. 拉链法删除插入操作易于操作,对于开放地址法不能简单置为空,否则查找会被截断,只能进行做删除标记。

拉链法缺点

需要额外空间,结点规模较小时,开放地址法相比于拉链法通过节省指针空间,装填因子更小,提高速度。