一、哈希表

用顺序表来存数据
存键值对时,通过哈希函数计算出键对应的索引,将值存到索引对应的数据区中
获取数据时,通过哈希函数计算出键对应的索引,将该索引对应的数据取出来

二、哈希冲突

对于任何哈希函数,都会出现两个不同的元素映射到同一个位置上的情况,这种情况称为哈希冲突

三、开链法

哈希表的每一个位置都连接一个链表,当发生冲突时,冲突的元素会被加到该位置的链表的最后


1、开链法存储数据

四、开放寻址法

如果哈希函数得到的位置i已经又数据了,那么就往后探查新的位置来存储这个值
线性探测:如果i有数据了,则探测i+1i+2…以此类推,直到找到空的位置
1、存储值的过程
a、key=apple,cat,dog,hello,通过哈希函数映射之后得到的值都为2
b、现有一个字典dic={‘apple’:1,‘cat’:2,‘dog’:3},存储数据,
c、原索引为2的位置没有存储数据,此时将apple的值1存储到这个
d、接着cat寻址到索引为2的位置,发现这个位置已经有值了,会继续往后探测,依次类推

2、获取值的过程
a、获取dic[‘dog’]的时候,先到索引为2的位置去获取
b、获取不到继续向后探测

3、删除值得过程
dic.remove(‘cat’)
a、给每一个节点定义一个状态
未使用
已使用
已删除

二次探测:如果位置i被占用,则探测i+1^2i+2^2…一次类推,知道找到空的位置

五、开链法和开放寻址法的区别

开链法:
优点:删除节点比较容易,数据量比较大使用开链法
缺点:使用空间比较大
开放寻址法:
删除节点不能真正的把节点删掉,给每一个节点定义一个状态,数据量比较小使用开放寻址法
缺点:
a、使用开放寻址法,那么顺序表总归会有一天会填满
b、一般为了保证插入和查找的效率,哈希表一般在元素数量在容量的2/3时,就会进行扩容
c、扩容之后,计算的哈希函数也会随之变化,那么里面的数据存储的顺序也会变化

【python】数据结构与算法—哈希表相关推荐

  1. python hash表_python数据结构与算法——哈希表

    哈希表 学习笔记 参考翻译自:<复杂性思考> 及对应的online版本:http://greenteapress.com/complexity/html/thinkcomplexity00 ...

  2. 数据结构与算法——哈希表与字符串

    文章目录 1.预备知识 1.1 最简单的哈希--统计字符个数 1.2 哈希表排序整数 1.3 哈希映射的问题 2.最长回文串 2.1 题目描述 2.2 C++代码实现 3.单词规律 3.1 题目描述 ...

  3. 数据结构与算法——哈希表

    哈希表 看一个实际需求,google公司的一个上机题: 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址-)当输入该员工的id时,要求查找到该员工的所有信息. 要求: ...

  4. Python数据结构与算法(四)--顺序表

    顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 根 ...

  5. Python数据结构与算法笔记(七):数据结构——队列,链表和哈希表

    队列 看成人在排队. 在出队到最后一个元素时,再想入队,使用列表可以在后面append,但是前面仍然占据着一部分内存,无法处理.想个办法让其收尾连成一个圈. 队列的实现方式:环形队列 判定一个队列是否 ...

  6. Python数据结构与算法(2.7)——跳表

    Python数据结构与算法(2.7)--跳表 0. 学习目标 1. 跳表的基本概念 1.1 跳表介绍 1.2 跳表的性能 1.3 跳表与普通链表的异同 2. 跳表的实现 2.1 跳表结点类 2.2 跳 ...

  7. Python数据结构与算法(2.2)——顺序表

    Python数据结构与算法(2.2)--顺序表 0. 学习目标 1. 线性表的顺序存储结构 1.1 顺序表基本概念 1.2 顺序表的优缺点 1.3 动态顺序表 2. 顺序表的实现 2.1 顺序表的初始 ...

  8. Python数据结构与算法(2.1)——线性表的基本概念

    Python数据结构与算法(2.1)--线性表的基本概念 0. 学习目标 1. 线性表的定义 2. 线性表的操作 3. 抽象数据类型线性表定义 相关链接 0. 学习目标 线性表是应用最为广泛的一种数据 ...

  9. Python数据结构与算法(1.1)——数据结构与算法导论

    Python数据结构与算法(1.1)--数据结构与算法导论 0. 学习目标 1. 数据结构概述 1.1 什么是数据结构 1.2 逻辑结构和物理结构 1.3 抽象数据类型 1.4 数据结构学习的必要性 ...

最新文章

  1. php error 关闭,php error_reporting()关闭报错
  2. 决策树——学习笔记(一)
  3. Facebook SDE onsite面经
  4. C++命名空间(namespace)
  5. 原神:创新和成功有目共睹,游戏可玩性历久弥新,戒骄戒躁保初心
  6. XX市公共租赁住房信息管理系统模板
  7. 面试官系统精讲Java源码及大厂真题 - 39 经验总结:不同场景,如何使用线程池
  8. php导出excel表格例子,PHP导出excel表格示例
  9. 软件开发团队中,凭什么新手当道?| 畅言
  10. jsoncpp用法简述
  11. 开源无人机如何实现空对地框选撞击?
  12. 第6-5课:五子棋游戏的相关算法
  13. EXCEL——向上、向下自动填充数据
  14. 小程序-e.detail.value动态获取input的value
  15. 如何修改input提示文字样式
  16. 怎样使用css动画animation实现静态箭头图片上下摆动
  17. aligned内存对齐
  18. 采样频率和带宽的关系_ADI公司AD7380系列SAR ADC的片内过采样 - 模拟技术
  19. HTML5——7个最牛的HTML5移动开发框架
  20. 开源引路人:我的Apache Mentor之路

热门文章

  1. 新基建将引发全国用电量暴涨近两成,如何应对
  2. 的日志在哪里_写给大忙人看的,MyBatis日志如何做到兼容所有常用的日志框架?...
  3. 联想按f2进不了bios设置_华硕笔记本win10装win7bios设置方法分享
  4. 成功解决To fix this you could try to: 1. loosen the range of package versions you‘ve specified ​​​​​​​
  5. ML之回归预测:利用Lasso、ElasticNet、GBDT等算法构建集成学习算法AvgModelsR对国内某平台上海2020年6月份房价数据集【12+1】进行回归预测(模型评估、模型推理)
  6. DL之PanopticFPN:Panoptic FPN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
  7. Matlab:盲反卷积还原失焦图像
  8. pyhanlp 词性标注(正篇)
  9. sklearn中的分类决策树
  10. xshell xftp使用