算法知识学习-----哈希(哈希函数与哈希表)

哈希函数与哈希表 哈希函数:一般就是用户传入一个数据,可以是字符串也可以是别的类型。然后该数据作为参数传入哈希函数中,哈希函数会返回一串长度为16或者32,每一个位置都是16进制,可以存放0-9或者是A-F的 字符串。 所以他可以得到的值有16^16个,是非常庞大的。MD5加密也是应用这个,他形成的是16位的16进制字符串。 他有几个性质: ① 输入域是无限的...
摘要由CSDN通过智能技术生成

哈希函数与哈希表

 

   哈希函数:一般就是用户传入一个数据,可以是字符串也可以是别的类型。然后该数据作为参数传入哈希函数中,哈希函数会返回一串长度为16或者32,每一个位置都是16进制,可以存放0-9或者是A-F的 字符串。 所以他可以得到的值有16^16个,是非常庞大的。MD5加密也是应用这个,他形成的是16位的16进制字符串。

   他有几个性质:

      ① 输入域是无限的  比如说我输入的是一个字符串,那理论上他可以是无限大的,所以输入时无限的

      ② 输出是有限的  他已经设定好了范围就是在0-16^16的范围

      ③多次输入同一个参数,返回的输出也是同一个返回值 

      ④输入不同的参数,最后的返回值可能是相同的,因为输入时无线的,但是输出有限。当输入数据远大于输出范围数据的时候,一定会出现不同输入,相同输出的情况。这种情况叫做碰撞。

       ⑤ 当输入数据量很大的时候,数据的输出是均匀的,就是他输出的0-16^16的范围中的每一个数据都是差不多的(离散型)

 

   基于这个性质,他会有很多的应用,我们也可以概括出几个特征。

   ① 他的输出是与数据本身的特性无关的,比如我输入的数据是 liming liming1 liming2  看起来这三个数据的相关性很高。但是在进行哈希计算的时候,他们之间输出的可能差距很大,毫无关联。

  

一道例题:快速设计出100个哈希函数 

          首先哈希函数需要满足上边的五点性质,对我们来说,让我们从0创造一个这样的函数难度是很大。但是不妨让我们换个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值