Hash算法系列-简介

         Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。hash算法的意义在于提供了一种快速存取数据的方法,它用一种算法建立键值真实值之间的对应关系,可以快速查找诸如链表中的元素。

         数学表述为:h = H(M) ,其中H( )--单向散列函数,M--任意长度明文,h--固定长度散列值。 

         链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。

         Hash算法现在应用比较广泛,除了快速查找,负载均衡、安全领域都有使用。

         Hash算法的衡量标准在不同的应用场景中有不同的衡量标准。大概有以下几种,但不仅限于此。

        1. 抗冲突性(collision-resistant)

         即在hash后无法产生2个散列值相同的预映射。通俗点讲不同的输入不能出现相同的输出。但绝对无冲突的hash算法很难做到。有些情形下为了防止hash冲突会进行二次hash或更多次的hash叠加。

          2.单调性(Monotonicity

     hash表扩容或减少时,之前的结果不能发生太大的改变。

         3.平衡性(Balance)

         散列在不同区间上的预映射总数大致相当。

        4.效率

         要基本达到平均为O(1)的时间复杂度。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值