讀題
查重問題。(查找的問題)
思路
線性查找

image.png
此處準(zhǔn)備了6個(gè)箱子(即長(zhǎng)度為6的數(shù)組)來存儲(chǔ)數(shù)據(jù)。假設(shè)我們需要查詢Ally的性別,由于不知道Ally的數(shù)據(jù)存儲(chǔ)在哪個(gè)箱子里,所以只能從頭開始查詢。這個(gè)操作便叫作“線性查找”

image.png
數(shù)據(jù)量越多,線性查找耗費(fèi)的時(shí)間就越長(zhǎng)。由此可知:由于數(shù)據(jù)的查詢較為耗時(shí),所以此處并不適合使用數(shù)組來存儲(chǔ)數(shù)據(jù)
hash set
keyword--哈希表
哈希表存儲(chǔ)的是由鍵(key)和值(value)組成的數(shù)據(jù)。例如,我們將每個(gè)人的性別作為數(shù)據(jù)進(jìn)行存儲(chǔ),鍵為人名,值為對(duì)應(yīng)的性別。
使用哈希函數(shù)(Hash)計(jì)算Joe的鍵,也就是字符串“Joe”的哈希值。得到的結(jié)果為4928。將得到的哈希值除以數(shù)組的長(zhǎng)度5,求得其余數(shù)。這樣的求余運(yùn)算叫作“mod運(yùn)算”。此處mod運(yùn)算的結(jié)果為3。

image.png
Nell鍵的哈希值為6276, mod 5的結(jié)果為1。本應(yīng)將其存進(jìn)數(shù)組的1號(hào)箱中,但此時(shí)1號(hào)箱中已經(jīng)存儲(chǔ)了Sue的數(shù)據(jù)。這種存儲(chǔ)位置重復(fù)了的情況便叫作“沖突”。

image.png
遇到這種情況,可使用鏈表在已有數(shù)據(jù)的后面繼續(xù)存儲(chǔ)新的數(shù)據(jù)。
為了知道Dan存儲(chǔ)在哪個(gè)箱子里,首先需要算出Dan鍵的哈希值,然后對(duì)其進(jìn)行mod運(yùn)算。最后得到的結(jié)果為4,于是我們知道了它存儲(chǔ)在4號(hào)箱中。

image.png