zoukankan      html  css  js  c++  java
  • 哈希表

    哈希表有三个重要的方面

    1.装填因子a,即已存入表中的元素个数和表大小之比。a越小,发生冲突的概率越小,但是a过小,会造成空间的浪费。

    2.哈希函数,即通过key第一次找到的地址,多个不同的key可能找到同一个地址,这就是冲突。

    3.解决冲突的方法。

    哈希函数的构造方法:

    1.直接定址法:取关键字的线性函数值为散列地址,addr = a*key + b 。由于是线性,因此一个key对应一个地址,不会发生冲突,但是由于地址是线性的,因此会占用连续地址空间,空间效率低。

    2.数字分析法:其实就是取key中的几位当地址,当然这几位要分布得比较均匀例如:

    key:

    347

    390

    354

    383

    就可以用后两位作为地址了。

    3.随机数法:选取一个随机函数random, addr = random(key),这种方法适用于key的长度不等。

    其余方法见文章 哈希表(一)

    解决冲突的方法

    1.开放地址法:即当插入的新记录的地址已经被占用时,在表里找一个没有被占用的,插进去。详情见哈希表(一)

    2.链地址法:把同义词(key通过哈希函数取得相同地址的)存入链表,

    其余方法见哈希表(一)

    哈希表的主要作用是快速查找,插入和查找时所用的哈希函数和解决冲突的方法是一样的。

  • 相关阅读:
    lombok介绍
    idea 离线安装 lombok插件
    Java中Lambda表达式的使用
    接口里的default,static方法
    Maven多环境配置实战 filter
    redis lua脚本学习
    redis的安装
    jdbc插入或查询数据库时间总是比实际时间少8小时原因
    [设计模式]单件模式
    [设计模式]命令模式
  • 原文地址:https://www.cnblogs.com/johnsblog/p/3427064.html
Copyright © 2011-2022 走看看