字符串哈希和哈希表的本质
来源:互联网 发布:制冷系统理论计算软件 编辑:程序博客网 时间:2024/06/06 19:18
很多人听到哈希, 是从md5开始的, 比如每一个字符串都有它的md5, 且两个不同字符串的md5值不一样, 而且根据md5值, 是无法求出原来的字符串的。 这就是字符串的哈希。 说白了, 哈希就是满足一定条件的变换, 本质就是变换, 思路简单得很。
在数据结构中, 又有哈希表, 这个是什么玩意儿呢? 对于非计算机专业的我来说, 开始是不太好理解的, 其实思路非常非常简单。 我们来看个场景: 有系列字符串"beibei", "jingjing", "huanhuan", "yingying", "nini", 怎么判断给定的字符串"xxx"是否在其中呢? 这个简单, 一个一个比较嘛, 更高级点就是排序后二分查找嘛, 或者装逼地搞个二叉排序树嘛, 逼格更高可以搞个红黑树嘛, 然而, 这些方法在哈希表面前, 简直弱爆了。 下面, 我们直接用代码来辅助理解(PHP中有md5函数, 所以用PHP搞起):
<?php $ht[md5("beibei")] = "beibei"; $ht[md5("jingjing")] = "jingjing"; $ht[md5("huanhuan")] = "huanhuan"; $ht[md5("yingying")] = "yingying"; $ht[md5("nini")] = "nini"; $x = "xxx"; if($ht[md5($x)] == $x) { echo $x . " ok\n"; } $x = "jingjing"; if($ht[md5($x)] == $x) { echo $x . " ok\n"; }?>结果是:jingjing ok
可见, 可以快速判断$x是否在一直的字符串集中中, 不需要轮询比较判断。 注意, 上述程序可以继续化简! 程序中的ht就是hash table
其实, 这么简单的东西, 真的不需要再多说。
阅读全文
1 0
- 字符串哈希和哈希表的本质
- 字符串常量的终极本质
- C语言(字符串的本质)
- AOP的本质和意义
- 社会的本质和真相
- 迭代器的本质和使用
- 编译程序和解释程序的本质
- 数字化的本质和基础
- 游戏和引擎的本质
- 矩阵和特征值的本质
- RPC的本质和问题
- 进程和线程的本质和区别
- 计算机的本质,程序和程序干扰
- 对象的内存本质,和相关
- “虚拟物品”的本质和法律属性
- WINDOWS和SQL验证的本质区别
- 抽象类和接口的本质区别
- 数组和指针的本质区别
- STL-list容器
- Spring-Boot使用profile来配置不同环境的配置文件
- 最大 / 小的K个数
- 单纯形法算法实现--java版
- java框架(2.0)SpringMVC的搭建
- 字符串哈希和哈希表的本质
- 【记录】Adobe AI CC 图片批量描摹脚本
- 【服务端知识点】koa框架深入浅出
- 第三周第一课 线性表
- Java使用阿里云OSS对象存储上传图片
- 2668-Point类的定义
- HDU
- 2669-Time类的定义
- Pycharm 下远程调试 Neutron 简介