zoukankan      html  css  js  c++  java
  • Hash表

    1.哈希表最重要的作用是实现O(1)效率的查找,首先有一个哈希函数确定元素在表中的位置;其次是解决冲突,其实现主要有两种:

    (1)链地址法:数组+链表 
    (2)探测法(开放地址法,线性、二次):哈希函数为 H[i](x)= (hash(x)+f(i)) mod TableSize 。H[i](x)为表中位置, f(i)为解决冲突的函数   f(0)=0,线性探测f(i)=i。
    2.链地址哈希表装填因子一般接近1。链地址法当装载因子超过0.5时,性能急速下降,此时可以考虑扩展哈希表。其他还有布谷鸟散列和跳房子散列。
    3.通用散列函数:Ha,b(x)=((ax+b) mod p) mod M 其中p为素数,M为表大小,0 <a,b<=p-1。
    4.散列表不能直接找出最小、最大元素,跟排序相关的数据最好用二叉查找树(输入数据可能有序的时候一般不用,效率很差),不需要有序或者对输入数据有序存有怀疑可以选用哈希表。
    5.对于任何带有实际名字而非数字的节点的图论问题优先考虑哈希表。
    6.String类型的哈希值为各个字符的ASCII码值乘以37后累加而成,因为String对象是常量,所以进行再散列时我们可以避免昂贵的重复计算哈希函数,这个技巧叫做闪存散列代码。
    三年程序员,专注语音文本分析、大数据挖掘、预训练模型及知识图谱相关技术的探索
  • 相关阅读:
    JavaScript replace() 方法
    vs2010注册码 激活方法
    Javascript 返回上一页
    错误:该行已经属于另一个表
    Oracle10g中如何分析响应时间
    Oracle Purge和drop的区别
    Oracle 的 Sql*Plus 常用命令介绍【转】
    如何实现oracle不同版本间数据的导入导出
    如何绑定变量使用
    Oracle PGA 介绍
  • 原文地址:https://www.cnblogs.com/jetHu/p/8503808.html
Copyright © 2011-2022 走看看