hash海量数据查询的一个实现 :周末练手

       前言:闲来蛋疼,周末在家陪老婆,中午还要亲自操厨,操厨之前,加深下对hash的理解,写下此篇。

       正文:本篇文章主要模拟了海量搜索过程。从txt文件获取大量数据信息(模拟海量),建立hash表,然后输入关键字(字符串),能迅速定位要找的value。其实就是搜索某个特定的字符串。具体会贴出代码,和验证图。整个过程模拟了海量查找的过程,能切实感觉到hash 海量处理的优势。

     先贴几张运行效果图:

                                                                                                                        


                                                                                    图 1

        稍微解释一下:结合图1 中的第一行,  第359次,指发生映射的顺序数;992处,指哈希数组中的位置,即hashTable[992];存入的字符串,为我们哈希映射以后把原字符串存起来,以便查找时比较;value,指映射后要定位的值,比如:我们要查找字符串出现的概率,或是字符串出现的次数等等,在程序里相当于留了一个借口。注意:所有的数据从txt里读取,而txt里的的数据由程序模拟生成,采用rand()函数。具体见后面的程序源码或下载后面贴出的工程文件的下载地址。我生成的是5000个,通过修改宏参数,可以更多,非常贴近真实。

   

                                                                                      

                                                                           图 2

       图 2 最后一行,显示了要查找字符串的位置。如下图,蓝色部分。

  


 

      网上先搜索了一番,发现要么就是理论一堆,要么就是贴出关键代码,让我等菜鸟始终没法体会海量的涵义。

      本文章分为三大部分。第一部分:hash的基本知识,第二部分,hash映射的建立和冲突的解决,具体代码实现

       hash 的主要作用就是快速查找,其时间复杂度是O(1),是最好的查找算法。对于hash的入门级别可参考我的一篇其他博文 数据结构-练习2 哈希表。hash的最基本理解就是:根据要查找的字符串的ASCII(经过变换处理),通过哈希函数,转换成与其存储位置的下标,这

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值