天天看點

7.4.2散列函數的構造方法7.4.3處理沖突的方法7.4.4散列查找及性能分析

7.4.2散列函數的構造方法7.4.3處理沖突的方法7.4.4散列查找及性能分析
7.4.2散列函數的構造方法7.4.3處理沖突的方法7.4.4散列查找及性能分析

思維導圖用了一些時間成品棒棒哒🎉🎈

沖突廚藝的說法以及想要表達的性能分析,首先我們先來學習一下散位函數的工作方法,如何構造一個小a函數呢,我們先來回憶一下小a函數的幾個概念,它是一個把叉叉表中的關鍵字映射成該關鍵字,對應的位址的這樣一個函數下面是我們的計算方法,它是k我們最終求得值,是我們對應存儲單元的d值aDDR那麼3a函數,我們無論是在構造散清單的過程當中,還是在散運表中進行查找時,都要用到這樣的函數,那麼如何構造它呢?我們先來看一下它的構造要求,第1個要求是響應函數的定義域必須包含全部需要存儲的關鍵字,這一點是必然的,為什麼呀?如果地域不包含我們所要存儲的關鍵字的話,那麼這些關鍵字就無法通過sin函數映射到對應的存儲單元上了食欲的範圍大小。我映射到對應的參數單元上了,而下一句是值域的範圍,則依賴于散清單的大小或位址範圍,這一點也是非常好了解的,因為我們如果對應求得了這樣一個值無法求算出我們三個表中的每一個測量單元的位址的話,那麼這些曆史的存儲單元是不是就浪費了?是以值域的範圍則依賴于SUV的大小或d值的這樣一個範圍,那麼第2個要求是什麼呢?Sin函數計算出來的一指應該能等待對均勻的整個位址空間上進而減少沖突的發生,因為如果它不均勻的分布在這種空間上的話,如果我們所有求的關鍵字對應的映射到的位址都是同一個的話,那麼它們是不是都産生沖突了?是以我們要求它最好能夠等待率均勻的分布在曆史空間上,這樣可以減少對應的沖突的發生。發生而最後一點則是響應函數應盡量簡單能夠在較短的時間内計算出任意關鍵字對應的這樣一個3a位址,那麼這一點大家也非常好了解,如果它非常難計算的話,我們對應的效率就會非常好,講解完了三個夠之後,接下來我們就來學習一下,在行業當中會主要涉及哪些構造方法,首先第1種好的方法是直接定植法,它是直接選取關鍵詞的某個線性函數的值為cd值,那麼我們看一下它的表示方法,是不是大家就非常好了解了,它是k這樣一個函數等于a,×k加b,右邊是一個線性函數,其中ab為常數,那麼這裡如果我們a=1時b=0時,那麼還是k,是不是就等于p啊,表示我們對應這個關鍵字以及映射到的這個位址的值是相等的這樣的方法有什麼特點呢他的方法非常簡單。好的,那麼這樣的方法有什麼樣的特點呢?我們發現它的方法非常簡單,就是一個線性函數,而且一定不會産生沖突,為什麼這是個線性函數的這樣一個特點啊?因為線上性函數當中,每個自變量隻能表示着根因變量,是以對應我們可以用這樣一個關鍵字,這樣一個線性函數,求算出的位址也隻有一個那麼不同的關鍵字,不會存在出相同的位址,是以它不會産生沖突,但是有一個缺點就是如果關鍵字分布不連續隻會浪費空間,那麼也非常好了解它是這樣一條直線,如果關鍵字不連續的話,那麼之間我們所求算的這些位址是不是都會浪費啊?接下來我們來看一個小例子,這是一個具有6個存儲單元的一個線性表,一個。

職業定制法的一個缺點,雖然他的方法簡單不會産生沖突,但是他有這樣的浪費空間的缺點,對他的應用其實并不是很常見,好,這就是第1個方法,接下來我們介紹下一個方法除冰取法,其實這種方法怎麼實際應用當中是最常用也是最簡單的一種方法,其實我們上一節課有簡單的表示過,就是運用了這樣一個全拼的操作,找到對應k所映射的這樣一個位址,那麼因為我們用到了曲p的操作,是以選p選這個曲的p是一個關鍵,它可以減少沖突的可能,什麼意思呢?例如如果關鍵詞集合當中偶數非常多的話,如果我們選擇p為2的話,是不是我們會将大部分的偶數所有的偶數都映射到下标為0的那一個位置啊?因為5數÷2是不是都等于0啊這樣就會增加沖突的是以選披上重要的怎麼樣的選擇我們這樣的規則。是以選批是非常重要的,那麼怎麼樣來選擇這樣一個p呢?我們這樣的規則假定響應表表長為m,我們要取一個不大于m,但最接近或等于大m的質數 p,我們取這樣一個質數為p,這樣可以減少沖突好,這就是屬于取法的一個表示,接下來我們就來看一個小例子,那麼我們利用了這樣的三函數,我們取了一個5,這是p等于5,那麼接下來我們看關鍵詞集合為這樣5個關鍵詞,我們一個一個來對它們進行存放,16取于5=1,是以它存放在下列為1的位置,23÷5=3,所放在下标為3的位置,30取5=l所放在下标為0的位置,4÷5=42÷5=來計算了每一個位址。注意用了除油取法來計算了每一個關鍵字對應用射到的位址,另外它們進行了存儲,那麼對于如果我們想要查找的話,方法也就相同,還是利用了這樣一個sin函數,那麼30取5=0,是以它存放在下面為0的位置,我們這樣就可以直接找到關鍵字,30是放在三個單元了,好,這就是滑鼠取法。當然了好,這就是主要取法。把數字分析法其實對于這種方法給大家舉個例子,大家知道非常好了解,這種方法是如何應用的了,那麼我們也出了8個二簡述同學們發現前8位的話,是不是前4個2就是數是相同的,後4個數是相同的,而最後的思維是不是所有的因數都是不同的,且他們出現機率是相等的,那麼此事如果我們将後4位作為該吧的,關鍵是它對應三個地市的計算的話,那麼晚這樣的方法就是我們今天現在所學習的數字分析法,那麼數字分析法其實就是我們選取的關系當中的幾位,這樣幾位有什麼樣的特點呢?它們的出現是均勻的,我們将這幾位作為我們對應3a位址的計算分析法用了他們的條件減少沖突的産生其實我們當中是不是。照這樣的沖突的産生,那麼其實我們在應用當中例如我們學号的散文位址計算的話,是不是也可以用到這樣的方法啊?我們每個人學号可能前幾位都是相同的,檔對應着我們入學的年級以及對應着我們的班級,那麼後幾位可能是不同的,是以我們此時如果用後幾位作為散位位址的計算的話,就可以減少沖突的産生那麼好,這就是數字分析法,它适用于關鍵是意志的集合,若更換關鍵色澤需要構造重新構造三維函數,這一點非常好一鍵是不是?如果國家4級和不一緻的話,我們就無法知道哪幾位他們是等待力均勻地出現的而弱化,那次如果更換的話是不是對應他們等待率的,這樣條件就破壞了,那麼我們就需要重新構造對應到相應函數,還有這就是數字分析的方法一件中間行為作為。數字分析的方法,接下來我們來介紹平方取中法這種方法也非常的好了解,它其實是取關鍵詞的平方值的中間幾位作為響應位址,比如我們對應的關鍵字是521,那麼我平方之後得到了271441,如果我們此時選擇7144作為sin定制的話,那麼我們就管這種方法叫做平方取中法,它有什麼樣的優點呢,它是适用于觀音寺的美味趣事,不均勻的時候或均小于3a地質所需要的位數,如果對應這一個波音斯的地質位數太小了的話,那麼我們平方之後它的位數是不是就變多了?這樣我們選取中間我們需要的幾位就可以适用了這樣的平方取中法來滿足了這樣小于3a位址所需位數的這樣一個情況,最後一種方法是折疊法相關性字分割成位數相同的幾部分,呃,注意這裡,我們最後一部分可能然後去這幾。要注意這裡,我們最後一部分可能有的時候會小一點,然後取這幾部分的疊加作為響應位址,什麼意思呢?例如就這樣的關鍵字5211252,那麼我們選取521+125+2,得到了最終這樣一個數字,為我們折疊法最終形成了這樣的三個位址,這就是折疊法,那麼它剩餘關鍵詞位數比較多,而且關鍵詞中到每位數字分布大緻均勻的情況下,那麼它與平方曲中法剛好相反,是不是我們嫌棄它這個關鍵字位數太多了呀?是以我們要把它分割開來,然後求一個和這樣就可以縮減對應的位數,而這樣我們就可以得到一個位數更小的三元位址,好這就是折疊法,那麼其實在考研當中,在我們考試當中最常應用的是我們對應的的除标取與法,那麼其他的幾種方法,大家在選擇題當中或者在我們概念的一個說明當中,能知道它是大概是怎樣的一個過程就可以了。我們知道沖突不可能取得避免,那麼應該如何處理這樣的沖突發生時的情況,我們為沖突産生沖突的,關鍵是尋找下一個空的還是地質,是不是就可以了,我們觀察這個詳細表是不是下面有我的位址為空啊,如果有什麼方法可以将24啊存放在5的這個位置上,是不是就非常的好了?那麼接下來我們就來學習處于沖突的這樣一個方法,那麼上述描述的過程其實是我們第1種方法叫做開放定值法,那麼我們還學習一種出門方法叫做拉電法,我們一共有這兩種重複的方法,首先我們來看看什麼是開放訂執法呢,它是指可行放心表象的貢獻力,至系向他的同一絲表象開放意象,他的非同一絲的表象開放,什麼意思呢非常好一點二十四因為他們都是非常好一點二十四因為他們都存放在。是因為他們都是放在下面為4的位置,那麼24我們也可以把它放在下面為5的位置,這樣一個空閑位置,是不是就是他又向非同一次表現開放了,那麼下面為5它像了一個非同1死24開放了,那麼是以這樣的方法叫做開放定制法,既像同義詞表像開放,又像非同義詞的表象開放,那麼我們形式化表示就是這樣一個表示 hI與hk加dI處于這個m,那麼為什麼要除以m呢?M是比較長,那麼因為有的時候我們加上一個數的時候,是不是就會超過這個表長啊?然後我們除以m是不是就是循環了對它進行存放方法一個是為了一個信念怎樣的序列就是我們下一個。序列,那麼這個增量是不是就是我們下一個存放存款單元啊,我們我們利用了之前它實際位址還是函數計算出了這個值,加上我們往下走的這一個距離就得到了,我們存放到現在,所想要存放到這一個第10單元,我們用hI來表示,那麼大家會發現這是一個地推的方法,什麼意思呢?就是我們加上了一個增量,可能找到的那個位置,它依舊存放了5.4,那麼此時我們是不是還要繼續向下再找一個增量,是以我們用了這樣一個增量序列來表示,我們每一次都要向下再走一個位置,走一個距離,來找到對應的那一個關鍵字所要存放的那一個位址,那存的單元,如果它為空的話,我們是不是就可以存放了?如果他沒罵他損壞了關鍵詞的話,是不是還要向下繼續尋找啊?是以我們用h來表示來表示,我們da幾次來尋找這一個位置,好,那麼接下來我們來看一個小例子。網店幾次來尋找這一個位置好,那麼接下來我們來看一個小例子啊,首先我們是不是利用了三個函數hk來計算了我們對應的映射到的這一個位址,如果此時我們發現該位址已經存放了文字的話,我們是。位址如果此時我們發現改位址已經存放了本次的話,我們是不是還要利用開放定時法向下繼續找到下一個我們所要找到的這個空閑的一個算術單元啊,那麼我們整個用了這樣的公式,hk加dI取m此時第1步是不是第1次尋找?是不是第1個怎麼樣d名,那麼我們加上hk加上d0取m其上出了h0,那麼我們這是第1個找到的這樣一個空閑的一個單元,如果他空閑的話是不是直接存放就可以了?如果他不空閑的話,我們是要地推的向下繼續進行尋找,那麼此時我們要加上第一h1就等于hk+d1取m,這樣我們找到了我們這樣一個空隙的存單元對它進行存放,将活顔色存放在其中如何計算這個資料我們有哪些。對它進行存放,将活顔色存放在其中,那麼如何計算這個增量dI呢?我們有哪些方法呢?我們分為這樣4種方法,線性探察法,平方探測法以及在此列法和尾随機序列法,那麼這一比較重要的是線性探查法,那麼我們在考試當中最常考察的其實是線性探查法,那麼其他三種方法其實與我們之前所學習的要把sin函數的過錯方法一樣,它都是在選擇題當中比較常考查到我們對它隻要知道它如何進行的就可以了好,那麼接下來我們再來學習一種方法線性探測法,那麼它的dI是什麼呢?是0123一直到m-1這樣一個增量序列來看一下如何這是一個三元。那麼我們就可以用線性探查法來看一下它是如何處理沖突的,那麼這是一個3a表,一共有9個組成單元,我們的散位函數是一個取于方法,那麼是k取9,那麼這裡是一個小存放關鍵詞的集合,有沒有關鍵詞我們來一個一個對它進行存放,首先是第1個關鍵字一局9是不是一樣,它存放在下列唯一的位置,10取91就是1,那麼我們利用線性探測法向下找了一個單元,是不是就是存放在下面為2的這樣一個位置啊?接着是21 21就是要存放在三下标的這個位置,因為它取于等于3,那麼15取于等于6,是以存放在下标為6的位置,14取=5,存放在下列為5的位置,23取之後依舊等于5,我們來線性探測一下,那麼23÷9=50,它應該存放在355的位置。15存放了關鍵字14,那麼我們探測下一個三個單元下一個算術單元依舊是滿的,那麼依舊啟發了關鍵字15我們繼續向下探測,探測到了第七,也就是相對為7的這樣一個位置,它是不是空閑的呀?是以将23存放在這樣一個位置,那麼先行探測法非常好,記憶是不是就是如果我們所要映射的這一個錯誤單元已經存放過一次的話,則繼續向下找一個成本單元就可以了,那麼如果找到的這個3單元還是綜合保險司的話,再繼續向下找一個單元,那麼同學們在這裡可能會有一個小疑問,就是我們一種新的方法愛找到了一個空閑單元,對我們關鍵字發生沖突時進行存放,那麼我們應該如何進行查找呢?例如我們來查找23這個關鍵字來試一下23,如果按照我們之前的方法,23取九它等于的是不是啊?對應着5啊發現。這我問一次來試一下,23,如果按照我們之前的方法23÷9,它等于的是不是要對應着5啊?那麼5我們發現是不是沒有存款23了我們應該如何進行查找呢?其實我們繼續的就是按照線性探測法的方式進行查找,現在的法是不是就是如果在位置滿的話,我想繼續向下找一個空閑的位置依次進行查找,那麼我們查找過程當中是不是也需要這樣的步驟?如果14不等于23的話,隻要繼續向下查找,因為它也可能存放在它的下一個存儲單元當中那麼15不等于23,我們依舊還要向下進行查找,我們查找到了7這個位置省放了23,這樣我們就查找到了23這樣一個關鍵字,那如果概括一次,不存在在我們所釋放的集合當中呢來源還沒有查找到。空寫的單元啊,如果我們查找到一個空寫單元,還沒有查找到對應照,我們需要查找的是關鍵字,那麼則表示它并沒有存在在這一個散清單當中,那麼同學在這裡可能會發現了,在散清單的插手過程當中,是不是依舊還是用到了比較啊,我們在映射到了一個地質存儲單元上的時候,要對它與我們所查的關系進行比較,那麼如果是的話,在茶城中,如果不是的話,隻要查找下一個單元裡,那麼其實三個表在實際應用當中因為他有沖突的這個弊端,是以最後其實我們還是利用到了比較的這個方法,它與我們之前所學習的那些常用方法,其實還是有一些相似之處的,還是用到了比較的過程,那麼接下來我們來看一下現象探索法有哪些缺點,我們還是利用了這樣一個渠構造了一個sin函數,然後存放了這4個關鍵字,我們來依次給它進行存放一直放在。時因為一已經存放在了下輩唯一的位置,是以他要向下進行現象探測啊,嘉羿走一個小單元,他存放在了下表為2的位置,那麼十一依舊要進行渠操作,取之後等于2,我們發現二是不是已經被這一個10關鍵字所存放了,是以它要存放在下一個什麼單元當中,然後十二曲酒之後等于三三倍關鍵41進行存放了,是以它存放在下面為4個位置,那麼這樣同學們可能會發現,我們是不是每一個對應用社的這一個關鍵詞都沒有存放在它對應的存放的那一個下标當中啊,他是不是向下移了一格啊?那麼這樣我們在查找的時候,他是不是就需要向下比較一次啊?是以這樣就會降低我們的産生效率,是以這樣的現象乘坐為堆積現象,這些現象會大大降低查找效率。教育,是以這樣的現象,我們稱作為堆積現象堆積現象,會大大降低查找效率,是以先探測可能會出現這樣大量相鄰的關鍵字元素存放在一個相鄰的位置,他們産生了堆積産生這樣的具展現象,會影響我們最終的查找效率,好,這就是先生探測的一個非常重要的缺點,接下來我們來看剩下的三種方法,首先是平方探測法平方差的法,我們來看一下它的怎麼樣序列,dI=0方,一方-1方,2方-2方知道,k方負k方其中k是小于= m÷2呢,這又發現了對應的增量修改,是不是不僅僅隻有正數了,有正數有負數,是以在平方探測法當中它是跳躍着進行探測的,在上面找一個位置位置而且他做事。然後在下面再找一個位置,而且它增加的長度是平方的長度,那麼14 10 96那麼月探測,其實它距離我們對應初始的這個因式的位置是越來越遠的,它遠的幅度也是越來越大的,是以越來越大的,是以這樣的平方特斯拉會避免堆積的這樣一個問題,但是它有一個缺點是不能探測到三個表傳導所有單元,但是至少可以探測到一般單元,因為它是這樣平方的形式,是以當然它不可以對應探測到所有的單元上,那麼其實在頻發探測法當中,我們對于散文表達表長有一個要求,就是它是4k+3的素數這裡提一點,大家可以簡單的記憶一下,簡單的了解一下這其實就是為了避免個問題問題讓我們學習的方法二三一十家到底。那它的方法因為它是現象增加到從0123一直加到對應到m減1,它是不會産生重複的問題的,但是在平方探測法當中,它可能會出現重複的問題,查重的問題目就是加上這個增量之後,不同生藥可能會映射到同一個位址當中,那麼這一點大家可以簡單的了解一下,最後一種方法就是再想一個法和為學習法,這樣的散文法非常好了解就是我們如果産生沖突,則利用了第2個三個函數來計算這個增量,那麼對應這個a就是對應向下探測的一個次數,然後為學習法就是這個增量序列,是一個僞随機序列,這裡為什麼要加上喂呢?是不是因為在計算機當中沒有絕對的随機啊?是以這也是一個為随機訓練這種計算方法進行地質單元的方法最重要的是我第一個學習的現象。轉增量序列的方法,進行向下找空閑的位址,單元的方法,那麼這裡最重要的是我們第1個所學習的線性探測法,在考試當中經常對它進行應用和考察。的話可以提供一個解決沖突的方法,為什麼我們還要設計出拉變法呢?我們來看一下這個例子,我們來回顧一下這些我們所舉的這個例子,我們介紹出了一個hk,這是我們用哈希函數計算出的對應的位址,那麼因為我們對要計算出的這個位址存放的關鍵字,我們是要繼續利用增量修煉來找到下一個所有單元找到了h0h0,依舊它是存放了核心詞的,是以還利用這個序列找到下一個組成單元,h1我們下上了第一,那麼我們将關鍵字k進行存放,那麼如何進行查找呢?之前我們提到過,我們是利用了這樣開放定值法,還有我們對應的sin函數來找到對應的關鍵字的,我們首先利用了sin函數,hk找到了第一,映射到這個地理單元,我們比較它其中的關鍵字,發現它不是對應所要找到的這個k,隻要利用對應的開放定制法,它提供的怎麼樣計算的方法。是對應所要找到的這一個k,隻要利用對應的開放定制法,它提供的怎樣計算方法求算出d0,找到下一個我們可能存放的這個位址單元h0,我們繼續與它其中存放的光源色結合比較,它依舊不等于k,是以還有一個月我們對應的這一個增量序列,第一找到下一個,我們可能存放它的第10單元 h1,我們比較一下發現它存放了k,是以我們找到了k值一個關鍵字,那麼此時我們發現是不是我們利用了這樣一個三個函數以及對應的增量序列,才能找到對應的我們所存放的這個k的第10單元啊,那麼此時我們來看一下,如果我們對搶清單進行删除,或者是操作我們删除了a是0所存放的這樣一個關鍵字,那麼它會産生什麼樣的問題呢?我們來看一下,如果此時我們還要找到這個關鍵詞,可以存放到存儲單元的話我們依舊用了這樣一個。儲存單元的話,我們依舊運用了這樣一個哈心函數,求三l它第一映射到這個位址,然後我們利用了增量的這個序列,找到了下一個可能存放的位址,h給了我們發現這裡是不是空啊,根據我們之前所學習的過程,是不是如果它為空則表示我們沒有對它進行存放啊,是以說此時我們根本找不到我們對應存放的這個關鍵詞,k我們認為它并沒有形成到散清單當中,因為我們斷了所查找的這一個鍊子所查找的這一個序列,所有問題是如果我們直接删除對應在采用表當中的關鍵字的話,可能就會影響某一些關鍵詞的查找過程,在開放定制法當中不能随便伸手某關鍵字,因為他有這樣的特點,是以啊,開放定址法他解決沖突并不是完美的,他會有這樣的弊端吃飯。把它解決沖突并不是完美的,他會有這樣的弊端,那麼如果我們在實際應用當中必須要用到開放定址法的話,其實我們可以設立一些标記标記他是為我們查找某個核心4的一個圖形過程,那麼這樣也可以解決開放定制化,産生了這一個弊端這個問題,那麼增加關鍵字也會産生一個弊端,就是我們除了要維護關鍵字以外,還要不停的更新審議表,不停的定期維護這樣一個審議表,然後這就是開放定時法,一個非常重要的一個特點,一個弊端,大家注意一下,在考察當中經常會考察這個特點好的,接下來我們就來學習拉練法,拉練法就是把所有同義詞存放在一個線性的鍊條中,那麼所有應用到同一位址下的這些關鍵字他們起來。這是我們對應的關鍵字了,存放的是我們指向存放着關鍵詞的機關表的頭指針,我們通過這個圖紙真就可以周遊到所有映射到該位址下的關鍵詞,這樣我們就可以處理沖突這一個問題,也就是說三個表當中存放的是頭指針,然後每個頭指針指向的是一個存放所有同義詞的這樣一個機關表,我們來看一個例子,例如我們來看這樣一個例子,存放着這樣一些整數元素的一個。我們是不是就處理了這樣沖突的問題,我們用了一個單面表來存放所有同義詞存放所有映射到同一位址下的關鍵字,好,這就是拉内法解決沖突,那麼蘭英法适用于經常進行插入和删除的情況,因為我們不用考慮,他會因為删除斷了某一些關鍵詞的查找的這一個序列,那麼其實同學們會發現,在開放定址法當中,我們其實用了一個一個遞增序列來表示了我們存放同義詞的這樣一個練,但是在拉鍊法當中,我們是把它實際的用了一個單連結清單來存放了所有同義詞,其實它們的原理都是一樣的,但是在開放電視法當中,我們因為删除可能會造成了一些斷斷開這樣查找序列的情況,那麼在拉音法當中,我們因為從它在單片表當中是以不會出現這樣的問題,是以這是拉音法他會增加一些。狀态這樣找徐悅的情況,那麼在巴顔法當中,我們因為從他在單連結清單當中是以不會出現這樣的問題,是以這事來源法,但是在掃當中它會增加一些指針域,那麼會消耗一定的分數空間,是以根據實際情況我們來做出采用哪一種方法更合适一些,那麼其實在實際應用當中,比如說在Java當中很多的有關send表的應用,我們都是采用的是拉練法,因為它既友善那麼又不會産生,我們例如在開放定制法當中那一些删除造成的問題,那麼這就是拉練法好,那麼接下來我們就來看一下,我們既然知道了怎麼樣處理沖突,怎樣利用sin函數來存放各個關鍵字存放各個元素,那麼接下來我們就來看一下三個表示如何對它們進行查找的,其實我們之前已經講過了,對他們如何進行查找,那麼就是按照三例的散列函數的方式,一些解決沖突的哪些方法來對他們進行查找,接下來我們就來總結一下他們的查找方法這是。啊,當然這裡的開放定址法采用的是我們的線性探查法來解決的,沖突号我們來總結一下,首先是不是要初始化的這樣一個散列函數,一個好的這樣一個散數計算的位址,然後檢測查找本中位址為a dd2的位置上是否有這樣的記錄,若無記錄說明它為空則傳回插入失敗,沒有這樣的記錄,但是如果有記錄,是不是還要與它的k值進行比較,因為我們會采用開放定制法或者是拉鍊法來解決沖突,是以目前存放的這個地質單元可能會有記錄,但是并不一定就是我們所要存放的這k所查找的這個k,是以一定要與它進行比較,那麼若相等則尚未成功,若不等則執行不知二不知道是什麼呢,不知道是不是?就是根據一些特定的處理沖突的方法計算下一次列的這個位址吧。沖突的方法計算下一散列的這個位址吧,也就是計算我們對應的增量來找一下下一個,如果該位置滿的話,下一個我們應該存放的位置是哪個?把ad加設為sd值,然後轉入步驟一來進行比較判斷。把ad加置為死位址,然後轉入步驟一來進行比較判斷來判斷該位置的k是否與我們所查到的k是否相等,其實這一操作步驟就是與我們之前所講出的那些查找的步驟是一樣的,隻不過現在我們來總結了一下,那麼我們再來舉兩個例子吧,例如在拉一法當中我們想要查找28種關鍵字,首先是不是應該通過小于函數确定它一定是存放在數下标為1的這樣一個啊,單清單當中啊,然後在單清單的查找就非常的友善了,即是通過它的頭指針鎖定第1個這樣一個節點,然後依次的對他們進行查找,這個關鍵詞展現出來效率就可以了,那麼散清單,如果是采用開放定值法的話,則首先還是要通過散函數确定它的這樣一個位址是不是就是一樣,然後我們來看28在哪呢,28 15在一的這個位址位置啊,因為這裡我們剛剛所說了,它是采用的是線性猜測法,是以如果它們存放在下邊唯一的位置的話。28三檔呢,28 15不在意的這個位址位置啊,因為這裡我們剛剛所說了,它是采用的是啊線性猜測法,是以如果它們存放在下表為1的位置的話,它可能存放在下一個從單元也就是下列為2的位置,我們來比較下列為2的位置

裝填因子

7.4.2散列函數的構造方法7.4.3處理沖突的方法7.4.4散列查找及性能分析

繼續閱讀