zoukankan      html  css  js  c++  java
  • 哈希表(散列表)

    数组的特点:寻址容易,插入和删除困难
    链表的特点:寻址困难,插入和删除容易

    而哈希表结合了数组和链表的优点,既能做到寻址容易,也能做到插入、删除容易

    哈希表的基本思想是:首先在元素的关键字K和元素的存储位置P之间建立一个对应关系F,使得P=F(K),F称为哈希函数。创建哈希表时,把关键字为K的元素直接存入地址为F(K)的单元;以后当查找关键字为K的元素时,再利用哈希函数计算出该元素的存储位置P=F(K),从而达到按关键字直接存储元素的目的。

    哈希函数的构造方法:
    1、数字分析法
    2、平方取中法
    3、分段叠加法
    4、除留余数法
      假设哈希表长为m,p为小于等于m的最大素数,则哈希函数为h(k)=k%p,其中%为模p取余运算
    5、伪随机数法

    处理冲突的方法:
    1、开放定址法(再散列法)
    2、再哈希法
    3、链地址法
    这种方法的基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。
    EG:
        已知有一个关键字序列:(27,23,34,14,1,55,20,19,85,83,10,68)散列存储在一个哈希表中,若散列函数为H(key)=key%7,并采用链地址法解决冲突,则等     概率情况下查找成功的平均查找长度为?
        这些key%7分别得到6,2,6,0,1,6,6,5,1,6,3,5
        则存储结构为:
        0-------------14
        1-------------1/85(其中1需要查找1次,85需要查找2次)
        2-------------23
        3-------------10
        4-------------
        5-------------19/68
        6-------------27/34/55/20/83
        总共查找次数为1+1+2+1+1+1+2+1+2+3+4+5=24
        总共有12个关键字
        所以,平均查找次数为24/12=2

    4、建立公共溢出区

  • 相关阅读:
    概率论
    Python3爬虫爬取淘宝商品数据
    利用Python数据分析基础
    Linux安装MATLAB2016a
    python3爬取高清壁纸(2)
    python3爬取高清壁纸(1)
    Git使用基础
    Python3基础
    正则表达式的使用基础
    Nginx配置多域名代理
  • 原文地址:https://www.cnblogs.com/Mr-Wenyan/p/8662935.html
Copyright © 2011-2022 走看看