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
  • 相关阅读:
    python冲刺(5)列表声称式
    python冲刺(4)切片 等
    python冲刺(3)函数 等
    python冲刺(2)
    python冲刺(1)
    redis初步(1)
    php连接Oracle的时候遇到的编码集问题
    redis初步
    php 命名空间
    指向字符数组的指针与指向整型数组的指针
  • 原文地址:https://www.cnblogs.com/chubuyu/p/15311007.html
Copyright © 2011-2022 走看看