一种高效快速解决hash冲突的方法与流程

文档序号:17762646发布日期:2019-05-24 21:50阅读:1008来源:国知局
本发明涉及一种解决hash冲突的方法。,更具体地说,涉及一种高效快速解决hash冲突的方法。
背景技术
::散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。但是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来唯一的确定输入值,由此引出hash冲突。解决hash冲突可以使用开放定址法。所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入。这种方法总能找到空闲地址,但容易产生数据聚集现象,从而达不到记录的均匀分布;需要的存储空间大且利用不充分。解决hash冲突还可以链地址法。链地址法就是一旦发生了冲突,将冲突的记录存入相应的链表中。链地址法处理冲突时无堆积现象,但是当链表元素逐渐累加变大时,性能会有所下降。技术实现要素:本发明要解决的技术问题在于,针对现有技术中的缺陷,提供一种高效快速解决hash冲突的方法,优化hash冲突问题时处理的性能及存储空间问题。本发明解决其技术问题所采用的技术方案是:构造一种高效快速解决hash冲突的方法,通过将布谷鸟散列思想与链地址法算法结合并引入lru算法优化实现混合哈希表查找方法,优化hash表构造以及查找效率。在本发明所述的高效快速解决hash冲突的方法中,所述高效快速解决hash冲突的方法步骤为:s1.建立两个hash表table1和table2组成布谷鸟散列表以及一个链地址哈希表table3;同时创建三个hash函数,hasha、hashb和hashc;s2.获得key后根据函数hasha、hashb计算hashcode,检查建立两个表table1、table2所对应的地址是否为空,如果其中一个为空,则直接插入到空地址当中,同时添加键频次c(count)通过比较table1和table2对应地址频次,将出现概率大的分配在所需比较次数少的位置,以而提高查找效率;s3.如果都不为空,则使用函数hashc插入到链地址哈希表table3中,并为其添加键频次p(count);s4.链地址表中的数据根据其p(count)的大小进行排序,将概率大的数据上浮至链地址表的表头;当链地址表中元素的概率大于布谷鸟散列表中元素的概率值时,链地址表中的元素将被移到布谷鸟散列表中,方便查找。实施本发明的一种高效快速解决hash冲突的方法,具有以下有益效果:通过此发明可以优化hash表构造以及查找效率,同时提高hashtable的利用率。将大大加速hash寻址key的索引进程。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1是本发明的高效快速解决hash冲突的方法流程图具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。如图1所示,所述高效快速解决hash冲突的方法步骤为:s1.建立两个hash表table1和table2组成布谷鸟散列表以及一个链地址哈希表table3;同时创建三个hash函数,hasha、hashb和hashc;s2.获得key后根据函数hasha、hashb计算hashcode,检查建立两个表table1、table2所对应的地址是否为空,如果其中一个为空,则直接插入到空地址当中,同时添加键频次c(count)通过比较table1和table2对应地址频次,将出现概率大的分配在所需比较次数少的位置,以而提高查找效率;s3.如果都不为空,则使用函数hashc插入到链地址哈希表table3中,并为其添加键频次p(count);s4.链地址表中的数据根据其p(count)的大小进行排序,将概率大的数据上浮至链地址表的表头;当链地址表中元素的概率大于布谷鸟散列表中元素的概率值时,链地址表中的元素将被移到布谷鸟散列表中,方便查找。进一步地,使用布谷鸟散列的思想利用较少的计算换取较大的空间,同时引入链表法解决布谷鸟散列在hash冲突处理时处理时间长的问题,并且通过lru使得热点数据的查询效率变的更快。尽管通过以上实施例对本发明进行了揭示,但本发明的保护范围并不局限于此,在不偏离本发明构思的条件下,对以上各构件所做的变形、替换等均将落入本发明的权利要求范围内。技术特征:技术总结本发明涉及一种高效快速解决hash冲突的方法,一种高效快速解决hash冲突的方法,通过将布谷鸟散列思想与链地址法算法结合并引入LRU算法优化实现混合哈希表查找方法,可以优化hash表构造以及查找效率,同时提高hash table的利用率。将大大加速hash寻址key的索引进程。技术研发人员:杨一蛟;宋鹏飞受保护的技术使用者:深圳竹云科技有限公司技术研发日:2018.12.28技术公布日:2019.05.24
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1