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

為了賬號安全,請及時綁定郵箱和手機立即綁定

第6節(jié)中變成hash array之后,對于字符串‘abc’的bucket來說,‘key’和‘h’的值那個是‘2’?

$arr=[0=>'foo',2=>'abc'],foo在第0個位置,第一個位置為空,abc在第二個位置,之后變成hash array? ,此時foo在第0個位置,abc在第一個位置,bar在第二個位置。
問題一:$arr[2]取得值是‘a(chǎn)bc’還是‘bar’?

問題二:‘a(chǎn)bc’對應(yīng)的key是‘2’還是對應(yīng)的‘h’是‘2’?

正在回答

2 回答

問題一:$arr[2]取得值是‘a(chǎn)bc’還是‘bar’?? ? ? ? 使用$arr[2]取的值還是‘a(chǎn)bc’? 但是請注意,在底層的hashtable中,abc被放在第1個位置,當(dāng)我們通過$arr[2]取值的時候, h值是2,2|-8=-6 從前面的索引數(shù)組中取-6的位置,是1;? 然后從arData[1]取出來,h=2跟我們的$arr[2]里面的2相等,這時候沒有發(fā)生沖突,因此,值就是我們要的,可以打印出來就是"abc",具體可以看下圖:https://img1.sycdn.imooc.com//5c2d7f4900018b4d25161054.jpg

問題二:從上圖可以看出, "abc"對應(yīng)的key是0x0? h是2.


看一下是不是能解決你的疑問呢?


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

qq_時光正濃歲月安好_0 提問者

感謝老師解疑。以下是我的理解不知道對不對,請老師指正。 如果是packed array ‘h’和idx是對應(yīng)的。如果是hash array 則是通過(如果關(guān)聯(lián)數(shù)組,則用key經(jīng)過hash函數(shù)計算出h)‘h’或運算計算出nIndex,再通過nIndex中保存的idx值找到對應(yīng)的位置。 ‘foo’存儲在idx='0'的位置是因為h='0'或運算-16得到nIndex='-16',該索引存儲的idx值為0,所以'foo'才存儲在0的位置。與packed array 存儲在同一個位置。 超級期待老師后續(xù)的課程。
2019-01-03 回復(fù) 有任何疑惑可以回復(fù)我~

如果是packed array ‘h’和idx是對應(yīng)的。如果是hash array 則是通過(如果關(guān)聯(lián)數(shù)組,則用key經(jīng)過hash函數(shù)計算出h)‘h’或運算計算出nIndex,再通過nIndex中保存的idx值找到對應(yīng)的位置。

---這句話完全正確的。 packed array就是按照idx取。? hash array就是hashtable了,要計算對應(yīng)的位置的。

‘foo’存儲在idx='0'的位置是因為h='0'或運算-16得到nIndex='-16',該索引存儲的idx值為0,所以'foo'才存儲在0的位置。與packed array 存儲在同一個位置。

-- 這個有一點點小問題, 對于hashtable是8個大小的時候就是0|-8? 在第-8個索引位置;? 你說的應(yīng)該是擴容一倍以后,變成了hashtable是16個大小了。? ?公式就是nIndex = h | ht->nTableMask;?



1 回復(fù) 有任何疑惑可以回復(fù)我~
#1

qq_時光正濃歲月安好_0 提問者

感謝老師解答。 ^-^
2019-01-03 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

第6節(jié)中變成hash array之后,對于字符串‘abc’的bucket來說,‘key’和‘h’的值那個是‘2’?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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