您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    哈希表哪家强?几大编程言语吵起来了!
    时间:2020-04-26 12:15 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    行将开播:4月29日,民生银行郭庆谈商业银行金融科技赋能的探求与实际

    哈希表华山论剑

    比特宇宙编程言语结合委员会预备举行一次大会,主题为哈希表,给各大编程言语帝国都发去了约请函,很快就到了大会这一天。

    哈希表哪家强?几大编程言语吵起来了!

    结合委员会秘书长收场发言:“诸位,为促进技术交流与开展,增强各帝国友谊,结合委员会特设此盛会,感谢诸位的捧场”

    会场传来一阵鼓掌声······

    哈希表哪家强?几大编程言语吵起来了!

    秘书长继续发言:“本次大会的主题是哈希表,人类顺序员运用最多的数据容器之一,各大编程言语帝国置信都有完成。明天的大会就围绕哈希表分为几个议题讨论,首先是第一个议题:存储结构与抵触处置”

    存储结构与抵触处置

    来自GoLang帝国的map率先发言:“哈希表,哈希表,首先得是个表嘛,所以最基本的要用一个数组来存储,数组中的每一个元素叫做bucket。至于hash抵触嘛,就用链表来处置嘛”

    哈希表哪家强?几大编程言语吵起来了!

    GoLang帝国的map说完,有人站了起来:“英雄所见略同!在下C++帝国的unordered_map,我们基本上也是选择的这种办法”

    此时,Python帝国的代表提出了质疑:“链表确实可以处置抵触,不过嘛,这要是抵触太多,链表太长,搜索起来岂不费时?”

    GoLang帝国的map和C++帝国的unordered_map面面相觑,不知如何应对。

    “链表太长的话,那就转成树结构!”,就在这时,又有人站了起来。

    见有人起身,Python帝国代表转身问道:“在下乃Python帝国的字典dict{},敢问阁下怎样称呼”

    “我是Java帝国的HashMap,和前面两位兄台的策略大体相反,只是在抵触过多,详细来说链表长度超过8的时分就转换成红黑树的结构,以此加快查找”

    哈希表哪家强?几大编程言语吵起来了!

    说完,map、unordered_map松了一口吻,和HashMap一同坐下了。

    dict{}继续提问:“在座的都是这个思绪,用链表处置抵触?”

    说完,另外一位代表站了起来,“等等,我们C#帝国的HashTable就没用链表!”

    dict{}显露了称心的表情,“那你们是怎样处置抵触的呢?”

    “咱HashTable外部运用的是双重散列法,咱外部不止一种哈希计算方式,一次Hash抵触,咱就换一个再算,直到找到有空位的中央存储”,HashTable回答到。

    dict{}看起来有些绝望,估量这也不是他所用的方式。

    “你问了半天,还没说你们Python是怎样处置抵触的呢?”,Java帝国的HashMap启齿了。

    “是啊,是啊”,其他代表也跟着起哄。

    见众人起哄,dict{}只好应对:“链表法固然不错,不过需求在插入数据进程中静态分配内存构建链表节点,开支不小,我们没有采用。”

    “那究竟用了啥,你倒是说啊,快急死我了”,C++的unordered_map有些急了。

    “我们用的是一种叫开放寻址法的策略,假设发现了抵触,就按照制定的策略从这个位置往后找,直到找到有空的位置存储”,dict{}继续说到。

    哈希表哪家强?几大编程言语吵起来了!

    “哪有那么复杂的事,你把别人的位置占了,那对应那个位置的数据来了怎样办?还有查找怎样找?删除怎样处置?这不全乱套了吗”,unordered_map追问不舍。

    “是这样的,按照我们既定的规则,在查找的时分就需求额外做一些任务,另外删除的时分也不能直接删除,否则会破坏规则链条·····”,接上去一段时间,dict{}给大家细心引见了他们的处置思绪。

    “你这个也太费事了,不如我们链表法来的明晰明了”

    “这怎样就费事了?这益处不不言而喻嘛?”,dict{}也不甘示弱。

    这时,秘书长打断了大家的争辩:“诸位,诸位,静一静,静一静,我们这个议题到此为止,进入下一个议题:哈希到位置映射”

    哈希到位置映射

    急性子的C++帝国代表unordered_map第一个说话:“这有什么好讨论的,不就是用hash值对哈希表数组长度停止一个求模运算吗?”

    “就是,这有什么好讨论的”,C#帝国的HashTable也附和到。

    “哎,此言差矣,我就没用取模运算”,众人望去,这Python帝国的dict{}又要闹什么新颖玩意。

    GoLang帝国的map问道:“老哥用的什么办法,别卖关子了,快说来听听”

    dict{}扫了众人一眼说到,“我的办法就是:”

    这是怎样个映射法?众代表皆摸不着头脑,议论纷繁,唯有Java帝国的HashMap听闻悄然一笑。

    dict{}见状问道:“HashMap兄台,莫非知晓其中玄机?”

    (责任编辑:admin)