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通过哈希函数取得相同地址的)存入链表,

    其余方法见哈希表(一)

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

  • 相关阅读:
    cmd查看端口号是否占用
    重新安装安全狗以后,apchpe 启动不了。
    springcloud组件-eureka
    关于mybatis和spring整合后的一级缓存
    SpringCloud理解篇
    mycat的读写分离
    mycat的分库分表
    Linux下mysql服务器配置
    mycat理解
    linux配置mysql
  • 原文地址:https://www.cnblogs.com/johnsblog/p/3427064.html
Copyright © 2011-2022 走看看