欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
解決哈希(HASH)沖突的主要方法
雖然我們不希望發(fā)生沖突,但實(shí)際上發(fā)生沖突的可能性仍是存在的。當關(guān)鍵字值域遠大于哈希表的長(cháng)度,而且事先并不知道關(guān)鍵字的具體取值時(shí)。沖突就難免會(huì )發(fā) 生。另外,當關(guān)鍵字的實(shí)際取值大于哈希表的長(cháng)度時(shí),而且表中已裝滿(mǎn)了記錄,如果插入一個(gè)新記錄,不僅發(fā)生沖突,而且還會(huì )發(fā)生溢出。因此,處理沖突和溢出是 哈希技術(shù)中的兩個(gè)重要問(wèn)題。
1、開(kāi)放定址法
     用開(kāi)放定址法解決沖突的做法是:當沖突發(fā)生時(shí),使用某種探查(亦稱(chēng)探測)技術(shù)在散列表中形成一個(gè)探查(測)序列。沿此序列逐個(gè)單元地查找,直到找到給定 的關(guān)鍵字,或者碰到一個(gè)開(kāi)放的地址(即該地址單元為空)為止(若要插入,在探查到開(kāi)放的地址,則可將待插入的新結點(diǎn)存人該地址單元)。查找時(shí)探查到開(kāi)放的 地址則表明表中無(wú)待查的關(guān)鍵字,即查找失敗。
注意:
①用開(kāi)放定址法建立散列表時(shí),建表前須將表中所有單元(更嚴格地說(shuō),是指單元中存儲的關(guān)鍵字)置空。
②空單元的表示與具體的應用相關(guān)。
     按照形成探查序列的方法不同,可將開(kāi)放定址法區分為線(xiàn)性探查法、線(xiàn)性補償探測法、隨機探測等。
(1)線(xiàn)性探查法(Linear Probing)
該方法的基本思想是:
    將散列表T[0..m-1]看成是一個(gè)循環(huán)向量,若初始探查的地址為d(即h(key)=d),則最長(cháng)的探查序列為:
        d,d+l,d+2,…,m-1,0,1,…,d-1
     即:探查時(shí)從地址d開(kāi)始,首先探查T(mén)[d],然后依次探查T(mén)[d+1],…,直到T[m-1],此后又循環(huán)到T[0],T[1],…,直到探查到T[d-1]為止。
探查過(guò)程終止于三種情況:
     (1)若當前探查的單元為空,則表示查找失?。ㄈ羰遣迦雱t將key寫(xiě)入其中);
    (2)若當前探查的單元中含有key,則查找成功,但對于插入意味著(zhù)失??;
     (3)若探查到T[d-1]時(shí)仍未發(fā)現空單元也未找到key,則無(wú)論是查找還是插入均意味著(zhù)失敗(此時(shí)表滿(mǎn))。
利用開(kāi)放地址法的一般形式,線(xiàn)性探查法的探查序列為:
        hi=(h(key)+i)%m 0≤i≤m-1 //即di=i
用線(xiàn)性探測法處理沖突,思路清晰,算法簡(jiǎn)單,但存在下列缺點(diǎn):
① 處理溢出需另編程序。一般可另外設立一個(gè)溢出表,專(zhuān)門(mén)用來(lái)存放上述哈希表中放不下的記錄。此溢出表最簡(jiǎn)單的結構是順序表,查找方法可用順序查找。
② 按上述算法建立起來(lái)的哈希表,刪除工作非常困難。假如要從哈希表 HT 中刪除一個(gè)記錄,按理應將這個(gè)記錄所在位置置為空,但我們不能這樣做,而只能標上已被刪除的標記,否則,將會(huì )影響以后的查找。
③ 線(xiàn)性探測法很容易產(chǎn)生堆聚現象。所謂堆聚現象,就是存入哈希表的記錄在表中連成一片。按照線(xiàn)性探測法處理沖突,如果生成哈希地址的連續序列愈長(cháng) ( 即不同關(guān)鍵字值的哈希地址相鄰在一起愈長(cháng) ) ,則當新的記錄加入該表時(shí),與這個(gè)序列發(fā)生沖突的可能性愈大。因此,哈希地址的較長(cháng)連續序列比較短連續序列生長(cháng)得快,這就意味著(zhù),一旦出現堆聚 ( 伴隨著(zhù)沖突 ) ,就將引起進(jìn)一步的堆聚。
(2)線(xiàn)性補償探測法 
線(xiàn)性補償探測法的基本思想是:
將線(xiàn)性探測的步長(cháng)從 1 改為 Q ,即將上述算法中的 j = (j + 1) % m 改為: j = (j + Q) % m ,而且要求 Q 與 m 是互質(zhì)的,以便能探測到哈希表中的所有單元。
【例】 PDP-11 小型計算機中的匯編程序所用的符合表,就采用此方法來(lái)解決沖突,所用表長(cháng) m = 1321 ,選用 Q = 25 。

(3)隨機探測 
隨機探測的基本思想是:
將線(xiàn)性探測的步長(cháng)從常數改為隨機數,即令: j = (j + RN) % m ,其中 RN 是一個(gè)隨機數。在實(shí)際程序中應預先用隨機數發(fā)生器產(chǎn)生一個(gè)隨機序列,將此序列作為依次探測的步長(cháng)。這樣就能使不同的關(guān)鍵字具有不同的探測次序,從而可以避 免或減少堆聚?;谂c線(xiàn)性探測法相同的理由,在線(xiàn)性補償探測法和隨機探測法中,刪除一個(gè)記錄后也要打上刪除標記。

2、拉鏈法
(1)拉鏈法解決沖突的方法
     拉鏈法解決沖突的做法是:將所有關(guān)鍵字為同義詞的結點(diǎn)鏈接在同一個(gè)單鏈表中。若選定的散列表長(cháng)度為m,則可將散列表定義為一個(gè)由m個(gè)頭指針組成的指針數 組T[0..m-1]。凡是散列地址為i的結點(diǎn),均插入到以T[i]為頭指針的單鏈表中。T中各分量的初值均應為空指針。在拉鏈法中,裝填因子α可以大于 1,但一般均取α≤1。
【例】設有 m = 5 , H(K) = K mod 5 ,關(guān)鍵字值序例 5 , 21 , 17 , 9 , 15 , 36 , 41 , 24 ,按外鏈地址法所建立的哈希表如下圖所示:
          
 
(2)拉鏈法的優(yōu)點(diǎn)
與開(kāi)放定址法相比,拉鏈法有如下幾個(gè)優(yōu)點(diǎn):
①拉鏈法處理沖突簡(jiǎn)單,且無(wú)堆積現象,即非同義詞決不會(huì )發(fā)生沖突,因此平均查找長(cháng)度較短;
②由于拉鏈法中各鏈表上的結點(diǎn)空間是動(dòng)態(tài)申請的,故它更適合于造表前無(wú)法確定表長(cháng)的情況;
③開(kāi)放定址法為減少沖突,要求裝填因子α較小,故當結點(diǎn)規模較大時(shí)會(huì )浪費很多空間。而拉鏈法中可取α≥1,且結點(diǎn)較大時(shí),拉鏈法中增加的指針域可忽略不計,因此節省空間;
④在用拉鏈法構造的散列表中,刪除結點(diǎn)的操作易于實(shí)現。只要簡(jiǎn)單地刪去鏈表上相應的結點(diǎn)即可。而對開(kāi)放地址法構造的散列表,刪除結點(diǎn)不能簡(jiǎn)單地將被刪結 點(diǎn)的空間置為空,否則將截斷在它之后填人散列表的同義詞結點(diǎn)的查找路徑。這是因為各種開(kāi)放地址法中,空地址單元(即開(kāi)放地址)都是查找失敗的條件。因此在 用開(kāi)放地址法處理沖突的散列表上執行刪除操作,只能在被刪結點(diǎn)上做刪除標記,而不能真正刪除結點(diǎn)。

(3)拉鏈法的缺點(diǎn)
     拉鏈法的缺點(diǎn)是:指針需要額外的空間,故當結點(diǎn)規模較小時(shí),開(kāi)放定址法較為節省空間,而若將節省的指針空間用來(lái)擴大散列表的規模,可使裝填因子變小,這又減少了開(kāi)放定址法中的沖突,從而提高平均查找速度。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
解決Hash沖突的幾種方法
理解哈希表
解決Hash碰撞沖突方法總結
面試細節:為什么 HashMap 默認加載因子非得是0.75?
五分鐘速讀:什么是散列表(哈希表)?
第三十三課 哈希表(二)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久