Hash 哈希表和算法思路详解

  • 哈希表是一种可以满足快速查找数据结构,时间复杂度接近O(1)。
  • 哈希函数是无限集到有限集的映射。
  • 处理数据量大,查找效率要求高时推荐使用hash容器。
  • hash不一定优于数组查找,尤其在n比较小的情况下,可能hash算法的代价更高
  • 问题:
  • 什么情况下考虑使用哈希容器?
  • 常用的哈希思路有哪些?
  • 评判哈希算法标准有哪些?
  • 哈希冲突是如何产生的?如何解决?
  • 如何构造一个hash算法?应注意哪些问题?

  • 效率高。

  • 映射分布均匀。

直接寻址法:

取关键字key,使用线性函数 Hash(key) = a * key + b。

数字分析法:

在一个班级里,同龄学生很多。在取学生年龄作为key时,应避免以年份作为key组成部分。

平方取中法:

key取平方,截取中间的几位作为新的key。数学计算的性质乘积中间几位和乘数每一位都有关,充分混合key每一位对生成的哈希值的影响,使映射分布更均匀。

取余法:

Hash(key) = key % m

相乘取整法:

Hash(key) = floor(frac(key * A), m), 0

Original: https://www.cnblogs.com/hggzhang/p/16441310.html
Author: 张宏港
Title: Hash 哈希表和算法思路详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/588309/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 简单两步,将Windows11右键菜单修改为Windows10风格

    Windows11更新后,右键菜单很多功能隐藏起来了,使用时需要点击”显示更多选型”才能获取完整功能。为了能获得Windows10右键菜单丝滑的体验,我总结…

    数据结构和算法 2023年6月7日
    0102
  • 基于接口而非实现编程

    抽象类和接口的区别 在面向对象编程当中,抽象类和接口是为抽象而生而的两个概念,在初学时特别容易搞混它们俩。 Java 既支持接口,也支持抽象类,这里主要拿 Java 的接口和抽象类…

    数据结构和算法 2023年6月8日
    0118
  • 深入C++03:面向对象

    📕面向对象 类和对象、this指针 不用做太多笔记,都可以看初识C++的笔记; 记住👀:声明后面都要加” ;“,比如声明方法和变量还有…

    数据结构和算法 2023年6月12日
    094
  • 1039 Course List for Student (25 分)

    1. 题目 Zhejiang University has 40000 students and provides 2500 courses. Now given the stud…

    数据结构和算法 2023年6月7日
    082
  • Html飞机大战(十五): 上线

    好家伙, 我的飞机大战部署上线了 感兴趣的可以去玩一下 (怕有人接受不了这个背景,我还贴心的准备切换背景按钮,然而这并没有什么用) 现在,我们停下脚步,重新审视这个游戏 现在基本的…

    数据结构和算法 2023年6月12日
    0121
  • 稀疏数组转换思路及代码实现

    基本功能 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用 稀疏数组来保存该数组。 处理方法 记录数组 一共有几行几列,有多少个 不同的值 把具有不同值的元素的行列及值…

    数据结构和算法 2023年6月12日
    0101
  • 【题解】试题库问题

    试题库问题 题目描述 问题描述: 假设一个试题库中有 (n) 道试题。每道试题都标明了所属类别。同一道题可能有多个类别属性。现要从题库中抽取 (m) 道题组成试卷。并要求试卷包含指…

    数据结构和算法 2023年6月12日
    096
  • 我已经说了5种css居中实现的方式了,面试官竟然说还不够?

    这是一篇关于居中对齐方式的总结 开篇之前,先问一下大家都知道几种居中的实现方式? 面试时答出来两三个就不错了,就怕面试官还让你继续说。今天就来总结一下这些居中的方式 1.flex布…

    数据结构和算法 2023年6月8日
    0118
  • 12.路径总和

    📃 题目描述 题目链接:路径总和 🔔 解题思路 可以参考一下 二叉树的所有路径 这题; 方法一:递归方法,回溯,重点:每次传入当前数据的总和进去,每次还需要和targetSum进行…

    数据结构和算法 2023年6月12日
    082
  • 【设计模式】之责任链模式

    定义 责任链模式(Chain of Responsibility Pattern)中,有一条由请求处理者对象组成的链条,每个对象(除最后一个对象外)都持有下一个对象的引用,请求发送…

    数据结构和算法 2023年6月12日
    098
  • st表树状数组入门题单

    树状数组用来维护一个具有区间可减(加)性质的工具,所以可以用来维护区间前缀和。区间最值不具有区间可减性,所以不能使用树状数组进行维护,而使用st表。 初始化 &#x9884…

    数据结构和算法 2023年6月7日
    092
  • CF 793 div2

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月12日
    069
  • 尽管我们手中空无一物

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据结构和算法 2023年6月8日
    095
  • 完全背包问题

    完全背包问题❓ 完全背包问题简介🐳 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。 每件物品都有无限个(也就是可以放…

    数据结构和算法 2023年6月7日
    0139
  • java多线程之-线程池状态

    1.背景 这一节我们来学习一下线程池状态….. 2.线程池状态 状态名称 高3位 是否接受新任务 是否处理队列中的任务 说明 RUNNING 111 是 是 线程池正常…

    数据结构和算法 2023年6月12日
    0119
  • 算法: 整数中 1 出现的次数

    问题 输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。 例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。 解决 //1、…

    数据结构和算法 2023年6月12日
    0101
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球