日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hash算法的介绍 【清晰易懂】

發(fā)布時(shí)間:2024/6/5 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hash算法的介绍 【清晰易懂】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

?

Hash表是一種數(shù)據(jù)結(jié)構(gòu) 提供快速的存取和查找,他是基于數(shù)組的,數(shù)組創(chuàng)建后大小是固定的難以拓展 ,當(dāng)然可以復(fù)制數(shù)據(jù)到更大的數(shù)組,但是非常消耗性能,如果數(shù)據(jù)量固定,需要快速查詢時(shí) hash表是一個(gè)不錯(cuò)的選擇

?

數(shù)組只能以數(shù)字作為下標(biāo) 而不能以字符串作為下標(biāo) 所以要考慮將字符串轉(zhuǎn)換為唯一的數(shù)字 這個(gè)過程叫做hash 過程由hash函數(shù)完成,使用hash函數(shù)插入數(shù)據(jù)到數(shù)組后,數(shù)組被稱為hash

?

Hash函數(shù)

1疊加法

假如給 字母編個(gè)號碼

空格0 a 1 ,b2 c 2,? 27 z

?

Hash函數(shù)采用加法運(yùn)算

?? 比如 abc = 1+2+3

?? 最大的字母是10

?? zzzzzzzzzz=26*10=260

?

顯然 所有的字母可能只能組合出? 260個(gè)索引為 ,而實(shí)際上單詞有 50000

?

而每一個(gè)索引的位置 需要存放單詞 50000/260=192個(gè)單詞 顯然不行

?

2 冪的連續(xù)乘法

?

?? 參考數(shù)字的拆分

? ?234=2*100+3*10+4

?

?? 那么abc? 因?yàn)樽帜甘?/span>27個(gè)

?? 1*27*27+2*27+3= 786

?

如果是 zzzzzzzzzz=?? 不知道有多大? 可能會操過變量允許的最大位數(shù)

?

怎么解決了 可以對產(chǎn)生的數(shù)字進(jìn)行壓縮

?比如 數(shù)組的大小是1000?

那么獲取下標(biāo)可以用 要存放的字母冪的連乘獲取的結(jié)果 % 1000(也就是數(shù)組的大小)

就能獲取一個(gè)數(shù) <1000

?比如(1000+999%1000 =999??

?

這樣仍然有一個(gè)問題

?

就是數(shù)組 可能壓縮產(chǎn)生的數(shù)字 已經(jīng)被其他的字母占據(jù)了 怎么辦了

?

有兩種解決方法 :開放地址法 鏈地址法

?

2.1開放地址法

? 開放地址法就是發(fā)現(xiàn)如果被占據(jù),就需要利用方法去找尋空白的位置,三種方法:線性探測,二次探測,再hash

?? 線性探測 比如產(chǎn)生的索引位置是123123被占據(jù)了? 124 124被占用找125 一直到找到是空白的地址

?

?? 二次探測:已填充數(shù)據(jù)的個(gè)數(shù)/hash表的大小 就是裝填因子,聚集就是hash表某個(gè)部分的位置都被填充 而部分位置一個(gè)數(shù)據(jù)的都沒有 出現(xiàn)聚集時(shí) 可能到比較遠(yuǎn)一點(diǎn)的單元格去尋找空的位置 就叫二次探測

?

? 一次探測 比如 找到的位置是 123? 123+1 123+2? 一步一步探測

? 二次探測????? 找到的位置是 123? 123+1?? 123+4 123+9? n的平方來探測

可以這么理解 首先查找臨邊 如果臨邊被占據(jù)了 懷疑可能旁邊也被占據(jù)了,跳到4的位置

有點(diǎn)憂慮可能有很大的聚集 結(jié)果跳到9的位置

?? 但是二次探測也會產(chǎn)生問題 :二次聚集 比如 n多個(gè)數(shù) 通過hash函數(shù)轉(zhuǎn)換的數(shù)字式一樣的 跳動的步驟也是一樣的 出現(xiàn)二次聚集

?

再哈希法:二次探測出現(xiàn)二次聚集的原因是因?yàn)?/span> 步長時(shí)相同的,現(xiàn)在需要創(chuàng)建一個(gè)布長不一樣的探測序列 這個(gè)序列可以在用一次hash化一便,布長不能為0 否則每次都在原地打轉(zhuǎn)

? stepSize=contant*(key%contant)

contant是介質(zhì) 小于數(shù)組容量,key是第一次hash的位置

?

?

2.2鏈地址法

?這種方法比較容易理解

?Hash表中位置放置的是第一次插入的值,以后如果hash話出來的位置 已經(jīng)存在數(shù)據(jù)的話 就已鏈表的形式指向第一個(gè)位置 ,如果在來一個(gè)指向第二個(gè)位置

?

很明顯這樣做會出現(xiàn)重復(fù)值 ,當(dāng)然也允許出現(xiàn)重復(fù)值

鏈表就不用再擔(dān)心容量問題

?

轉(zhuǎn)載于:https://www.cnblogs.com/liaomin416100569/archive/2010/10/28/9331589.html

總結(jié)

以上是生活随笔為你收集整理的hash算法的介绍 【清晰易懂】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 浮生影视在线观看免费 | 亚洲免费观看av | 精品在线免费观看视频 | av天天干 | 99ri在线观看 | 成人小视频免费看 | 午夜精品一区二区三区免费视频 | 浪漫樱花在线观看高清动漫 | 91视频在线 | 完美搭档在线观看 | 欧美性视频在线播放 | 黄色第一网站 | 两性囗交做爰视频 | 青青草97国产精品免费观看 | 亚洲天堂资源 | 老司机精品视频网站 | 91在线精品一区二区 | 国产aⅴ精品一区二区果冻 台湾性生生活1 | 中文字幕视频网 | 93久久精品日日躁夜夜躁欧美 | 日韩视频中文字幕 | 人妻洗澡被强公日日澡电影 | 性生活一级大片 | 人人插人人澡 | 永久免费看片在线播放 | 美女自卫网站 | 久久久久国产精品熟女影院 | 精品小视频| 国产911在线观看 | 成人免费毛片aaaaaa片 | 久久久久久国产精品免费免费 | 国产一区二区 | av在线视屏 | 波多野吉衣一区 | 亚洲精品在线观看视频 | 免费av软件| 暴操白虎 | 永久免费汤不热视频 | av综合色 | 欧美 中文字幕 | 男女av在线 | 懂色av中文字幕 | 成人做爰100 | 欧美激情二区三区 | 黄色网战在线观看 | a级欧美| 老司机精品福利导航 | 日韩精品福利视频 | 免费av一区| 麻豆国产一区二区三区 | 天天干精品 | 金瓶风月在线 | 国产精品国产三级国产aⅴ中文 | 欧美精品hd| 色播一区二区 | 嫩草视频免费观看 | 欧美三级韩国三级日本三斤 | 欧美激情三级 | 在线黄av | 欧美裸体xxxx极品少妇 | 一呦二呦三呦精品网站 | 国产精品人妻一区二区三区 | 亚洲天堂欧美在线 | 天堂岛av| 成年人视频网址 | 日韩a毛片 | 日韩免费成人av | 婷婷开心激情 | 精品亚洲国产成av人片传媒 | 成人自拍视频在线 | 国产精品99久 | 永久免费看片在线播放 | 综合色伊人| 国产成人无遮挡在线视频 | 国产一区二区三区四区五区 | 亚洲激情在线观看 | 91麻豆成人精品国产 | 人人爱超碰 | 成人免费在线视频观看 | 一起操17c | 精品国产aⅴ一区二区三区四川人 | 欧美一级性生活视频 | 国产精品视频一区在线观看 | 朋友人妻少妇精品系列 | 亚洲熟女乱综合一区二区三区 | 亚洲aaaa级特黄毛片 | 激情综合婷婷 | 成人毛片在线精品国产 | 午夜宅男在线 | 欧美精品第一区 | 国产不卡a | 麻豆免费在线观看视频 | 欧美日韩精品国产 | 国产福利午夜 | 最新精品国产 | 亚一区二区 | 亚洲精品水蜜桃 | 欧美激情视频在线 | 蜜臀av免费在线观看 |