第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

誰(shuí)能給講講哈希碼

誰(shuí)能給講講哈希碼

慕粉小蝸牛 2016-06-20 17:52:32
對(duì)哈希碼一直有點(diǎn)困惑
查看完整描述

2 回答

已采納
?
KFEB5

TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超4個(gè)贊

哈希碼可以理解為數(shù)據(jù)的名字,在一大堆數(shù)據(jù)里找到某個(gè)數(shù)據(jù),需要指定數(shù)據(jù)一個(gè)唯一的名字(重名可不好)。數(shù)據(jù)的名字可以隨便起,自然用編號(hào)最好。
生成hash碼的方法多種多樣。核心就是唯一標(biāo)識(shí)數(shù)據(jù)。
數(shù)據(jù)有了名字之后怎么使用這個(gè)名字呢?建立一個(gè)花名冊(cè),就像分配宿舍一樣,一個(gè)名字后面對(duì)應(yīng)一個(gè)宿舍,根據(jù)名字就可以迅速找到目標(biāo),否則就要一個(gè)個(gè)房間找過(guò)來(lái)。這比喻這基本上和hash表的原理類似。另一個(gè)更合適的比喻是字典,新華字典那種。
恩,差不多就是這樣

查看完整回答
3 反對(duì) 回復(fù) 2016-06-20
  • 慕粉小蝸牛
    慕粉小蝸牛
    什么地方能用到哈希碼,什么地方用不到那,比如集合list比較值就不用哈希碼,hashset則用,,,能說(shuō)下嗎,謝謝
  • KFEB5
    KFEB5
    集合list,比較值?沒(méi)有看懂。list和hashset的算法和用途是不一樣的。hashset主要是為了快速的隨機(jī)查找數(shù)據(jù)(隨機(jī)的意思是任意的查找),比如我想知道‘鋼鐵’的意思,那么我就會(huì)通過(guò)鋼鐵的拼音規(guī)則查找字典目錄,這個(gè)查找目錄的過(guò)程依賴于這個(gè)目錄的結(jié)構(gòu)(拼音按照字母表排序規(guī)則),可以理解為hashcode的編碼規(guī)則,是一種邏輯上的數(shù)據(jù)結(jié)構(gòu)。 而list就沒(méi)有這樣的要求,可以隨便線性的放置任意數(shù)據(jù),你可以選擇按序排放,但并不需要為每個(gè)對(duì)象起個(gè)名字(hashcode)。 實(shí)際上你可以仔細(xì)看一下asd8532,他提供的解釋非常棒。我為了盡量讓語(yǔ)句通俗一點(diǎn),用了很多比喻,但是任何比喻都會(huì)偏離原來(lái)的本意。你用不著在我的比喻上進(jìn)行拓展的想象,直接觀察相關(guān)的算法可以有更加準(zhǔn)確的認(rèn)識(shí)。
?
asd8532

TA貢獻(xiàn)143條經(jīng)驗(yàn) 獲得超187個(gè)贊

哈希算法并不是一個(gè)特定的算法而是一類算法的統(tǒng)稱。哈希算法也叫散列算法,一般來(lái)說(shuō)滿足這樣的關(guān)系:f(data)=key,輸入任意長(zhǎng)度的data數(shù)據(jù),經(jīng)過(guò)哈希算法處理后輸出一個(gè)定長(zhǎng)的數(shù)據(jù)key。同時(shí)這個(gè)過(guò)程是不可逆的,無(wú)法由key逆推出data。

如果是一個(gè)data數(shù)據(jù)集,經(jīng)過(guò)哈希算法處理后得到key的數(shù)據(jù)集,然后將keys與原始數(shù)據(jù)進(jìn)行一一映射就得到了一個(gè)哈希表。一般來(lái)說(shuō)哈希表M符合M[key]=data這種形式。
哈希表的好處是當(dāng)原始數(shù)據(jù)較大時(shí),我們可以用哈希算法處理得到定長(zhǎng)的哈希值key,那么這個(gè)key相對(duì)原始數(shù)據(jù)要小得多。我們就可以用這個(gè)較小的數(shù)據(jù)集來(lái)做索引,達(dá)到快速查找的目的。

稍微想一下就可以發(fā)現(xiàn),既然輸入數(shù)據(jù)不定長(zhǎng),而輸出的哈希值卻是固定長(zhǎng)度的,這意味著哈希值是一個(gè)有限集合,而輸入數(shù)據(jù)則可以是無(wú)窮多個(gè)。那么建立一對(duì)一關(guān)系明顯是不現(xiàn)實(shí)的。所以"碰撞"(不同的輸入數(shù)據(jù)對(duì)應(yīng)了相同的哈希值)是必然會(huì)發(fā)生的,所以一個(gè)成熟的哈希算法會(huì)有較好的抗沖突性。同時(shí)在實(shí)現(xiàn)哈希表的結(jié)構(gòu)時(shí)也要考慮到哈希沖突的問(wèn)題。

密碼上常用的MD5,SHA都是哈希算法,因?yàn)閗ey的長(zhǎng)度(相對(duì)大家的密碼來(lái)說(shuō))較大所以碰撞空間較大,有比較好的抗碰撞性,所以常常用作密碼校驗(yàn)。


查看完整回答
4 反對(duì) 回復(fù) 2016-06-20
  • 2 回答
  • 3 關(guān)注
  • 2028 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)