哈希算法(Hash)
Posted 我是青柠呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了哈希算法(Hash)相关的知识,希望对你有一定的参考价值。
本文从以下三个核心点展开:
1、哈希表查找
2、什么是哈希算法
3、哈希算法的应用
1、哈希表查找(散列表查找)
为了衔接之前的知识,我们从哈希表查找开始讲起。举个栗子,我们要在a[ ]数组中查找Key关键字的存储位置:
如果我们选择用顺序表查找的方法,那么我们需要进行挨个儿比较,换言之,就是从一端开始比较,直到找到或者全部计较完。因为在顺序表中的数据是随机存放的,所以我们查找Key的位置需要不断的通过迭代进行比较,直至全部比较完。
如果我们选择的是有序表查找,那么我们可以把a[ ]数组先进行排序,从大到小或者从小到大之后,我们可以用更高效率的二分查找法进行查找。那我们今天可以更高效率的查找方法——散列表查找,也就是哈希表查找。它不需要迭代不需要比较,而是通过查找关键字直接获取记录的存储位置。即:
记录存储位置=f(关键字)
这里我们把这种对应关系f称为散列函数,又称为哈希(Hash)函数。按照这种思想,采用散列技术记录存储在一块连续的存储空间中,这块连续存储空间成为散列表或哈希表(Hash table )
散列表的查找步骤:
举个栗子,用散列表查找法在学校里找人,找麦克斯韦要到物理实验室找,找居里夫人要到化学实验室找,找姚期智要到计算机实验室找,而找我则要到物联网1802班找..... 到这里我想你已经明白了
2、什么是哈希算法
首先要清楚一点的是,哈希算法并不是一个特定的算法而是一类算法的统称。哈希算法也叫散列算法,将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值(散列值)。
一般来说满足这样的关系:f(data)=key,输入任意长度的data数据,经过哈希算法处理后输出一个定长的数据key。同时这个过程是不可逆的,无法由key逆推出data。如果是一个data数据集,经过哈希算法处理后得到key的数据集,然后将keys与原始数据进行一一映射就得到了一个哈希表。
哈希算法的特点有:
1、输入可以为任意大小的字符串;
2、产生固定大小的输出;
3、可以在合理的时间内算出输出值。
3、哈希算法的应用
哈希算法的应用非常非常多,最常见的有七个,分别是安全加密、唯一标识、数据校验、散列函数、负载均衡、数据分片、分布式存储。
3.1.区块链中的密码学(安全加密)
哈希算法是一种加密算法,它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。以比特币为例,来看一下哈希算法的具体应用:在比特币中,使用哈希算法把交易生成数据摘要,当前区块里面包含上一个区块的哈希值,后面一个区块又包含当前区块的哈希值(),就这样一个接一个的连接起来,形成一个哈希指针链表。(就写这个,其他的不想写了)
浅学《数据结构与算法》课外拓展阅读笔记,十五周共十篇,已经算完结了,非常感谢自己这三个月以来的坚持!
ColorC1Troupe
万 物 皆 可 递 归
以上是关于哈希算法(Hash)的主要内容,如果未能解决你的问题,请参考以下文章