欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當(dāng)前位置:主頁(yè) > 軟件編程 > C#教程 >

如何解決hash沖突

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C#教程|點(diǎn)擊: 次

1)沖突是如何產(chǎn)生的?

  上文中談到,哈希函數(shù)是指如何對(duì)關(guān)鍵字進(jìn)行編址的規(guī)則,這里的關(guān)鍵字的范圍很廣,可視為無(wú)限集,如何保證無(wú)限集的原數(shù)據(jù)在編址的時(shí)候不會(huì)出現(xiàn)重復(fù)呢?規(guī)則本身無(wú)法實(shí)現(xiàn)這個(gè)目的。舉一個(gè)例子,仍然用班級(jí)同學(xué)做比喻,現(xiàn)有如下同學(xué)數(shù)據(jù)
張三,李四,王五,趙剛,吳露.....
假如我們編址規(guī)則為取姓氏中姓的開頭字母在字母表的相對(duì)位置作為地址,則會(huì)產(chǎn)生如下的哈希表

位置 字母 姓名
0 a
1 b
2 c

...

10    L     李四

...

22 W 王五,吳露
..
25  張三,趙剛

我們注意到,灰色背景標(biāo)示的兩行里面,關(guān)鍵字王五,吳露被編到了同一個(gè)位置,關(guān)鍵字張三,趙剛也被編到了同一個(gè)位置。老師再拿號(hào)來找張三,座位上有兩個(gè)人,"你們倆誰(shuí)是張三?"

2)如何解決沖突問題

既然不能避免沖突,那么如何解決沖突呢,顯然需要附加的步驟。通過這些步驟,以制定更多的規(guī)則來管理關(guān)鍵字集合,通常的辦法有:

a)開放地址法

開放地執(zhí)法有一個(gè)公式:Hi=(H(key)+di) MOD m i=1,2,...,k(k<=m-1)
其中,m為哈希表的表長(zhǎng)。di 是產(chǎn)生沖突的時(shí)候的增量序列。如果di值可能為1,2,3,...m-1,稱線性探測(cè)再散列。
如果di取1,則每次沖突之后,向后移動(dòng)1個(gè)位置.如果di取值可能為1,-1,2,-2,4,-4,9,-9,16,-16,...k*k,-k*k(k<=m/2)
稱二次探測(cè)再散列。如果di取值可能為偽隨機(jī)數(shù)列。稱偽隨機(jī)探測(cè)再散列。仍然以學(xué)生排號(hào)作為例子,
現(xiàn)有兩名同學(xué),李四,吳用。李四與吳用事先已排好序,現(xiàn)新來一名同學(xué),名字叫王五,對(duì)它進(jìn)行編制

10.. .... 22 .. .. 25
李四.. .... 吳用 .. .. 25

  趙剛未來之前
10.. .. 22 23 25
李四.. 吳用 王五
 
  (a)線性探測(cè)再散列對(duì)趙剛進(jìn)行編址,且di=1
10... 20 22 .. 25
李四.. 王五 吳用

  (b)二次探測(cè)再散列,且di=-2
1... 10... 22 .. 25
王五.. 李四.. 吳用

  (c)偽隨機(jī)探測(cè)再散列,偽隨機(jī)序列為:5,3,2

b)再哈希法

當(dāng)發(fā)生沖突時(shí),使用第二個(gè)、第三個(gè)、哈希函數(shù)計(jì)算地址,直到無(wú)沖突時(shí)。缺點(diǎn):計(jì)算時(shí)間增加。
比如上面第一次按照姓首字母進(jìn)行哈希,如果產(chǎn)生沖突可以按照姓字母首字母第二位進(jìn)行哈希,再?zèng)_突,第三位,直到不沖突為止

c)鏈地址法

將所有關(guān)鍵字為同義詞的記錄存儲(chǔ)在同一線性鏈表中。如下:

因此這種方法,可以近似的認(rèn)為是筒子里面套筒子

d)建立一個(gè)公共溢出區(qū)

假設(shè)哈希函數(shù)的值域?yàn)閇0,m-1],則設(shè)向量HashTable[0..m-1]為基本表,另外設(shè)立存儲(chǔ)空間向量OverTable[0..v]用以存儲(chǔ)發(fā)生沖突的記錄。
經(jīng)過以上方法,基本可以解決掉hash算法沖突的問題。

注:之所以會(huì)簡(jiǎn)單得介紹了hash,是為了更好的學(xué)習(xí)lzw算法,學(xué)習(xí)lzw算法是為了更好的研究gif文件結(jié)構(gòu),最后,我將詳細(xì)的闡述一下gif文件是如何構(gòu)成的,如何高效操作此種類型文件。

以上就是本文的全部?jī)?nèi)容,希望能給大家一個(gè)參考,也希望大家多多支持我們。

上一篇:C# TreeView無(wú)限目錄樹實(shí)現(xiàn)方法

欄    目:C#教程

下一篇:C#使用winform簡(jiǎn)單導(dǎo)出Excel的方法

本文標(biāo)題:如何解決hash沖突

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6409.html

網(wǎng)頁(yè)制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語(yǔ)言數(shù)據(jù)庫(kù)服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有