算法图解 --- 第5章 散列表

本章内容

  • 学习散列表 hash table 的数据结构的内部机制:实现、冲突和散列函数。这将帮助你理解如何分析散列表的性能。
  • 知道常见的应用

先验知识

散列表即哈希表,就是python的 字典。

学习目标

掌握以下几个问题:

1、 为什么需要散列表这种数据结构?
进一步加快查找速度。查找速度可为O(1), 常量速度。
在这里插入图片描述

2、散列表是什么?

背景引出散列表
查阅商品价格
若采用逐个查找,或是二分查找,速度都不快,相比于人记住价格。

在这里插入图片描述
在数组索引的对应位置存放价格。

对于散列函数的要求:

  • 相同输入必须相同输出
  • 不同输入映射到不同数字

3 如何实现?有哪些问题?如何解决?

散列函数创建的问题: 冲突
即不同的键映射到数组的相同位置

如何解决?
最简单的办法:如果两个键映射到了同一个位置,就在这个位置存储一个链表
在这里插入图片描述

散列函数很重要,好的散列函数很少导致冲突。避免冲突办法:
较低的填装因子
填装因子度量的是散列表中有多少位置是空的。
填装因子越低,发生冲突的可能性越小,散列表的性能越高。经验规则是:填装因子大于0.7,就调整散列表的长度

良好的散列函数
什么是良好的散列函数?
在这里插入图片描述
什么样的散列函数是良好的呢?如果你好奇,可研究一下SHA函数

  1. 有哪些应用?
    创建电话本
    DNS解析:将网址映射到IP地址
    缓存

 模拟映射关系;
 防止重复;
 缓存/记住数据,以免服务器再通过处理来生成它们。

添加要改颜色的字体

添加要改颜色的字体

添加要改颜色的字体

添加要改颜色的字体

发布了71 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42025376/article/details/105657602
今日推荐