2010-06-23 53 views
0

我有大小m = 11的數組和我的散列函數是劃分方法:h(k) = k mod m 我有一個整數k = 1010 mod 11 is -1所以我應該在哪裏把數組中如此重要呢?我應該把這個鑰匙放在索引爲10的插槽裏? 請幫我謝謝線性開放探索解決

編輯:嗎?讓我回答好,比如我有喜歡k = 10,22,31,4,15,28,17,88,59

整數數組會是這樣感謝

10 9 8 7 6 5 4 3 2 1 0  index 
10 31 59 17 28 4 15   88 22 keys 
+1

http://en.wikipedia.org/wiki/Open_addressing – 2010-06-23 04:23:49

+0

感謝您的網站,但我想做一些例子是不是也我homework.any感謝 – user355002 2010-06-23 04:28:02

回答

0

由於它通常做,10國防部11是10,所以是的,你通常使用索引10。

編輯:概括:至少如通常定義的那樣,給定兩個正輸入,模將總是產生一個正的結果。因此,關於如何處理負面結果的問題與正常定義無關。

如果你確實有可能得到一個負面的結果,我的直接反應是切換到一些語言,將產生一個合理的結果。如果你不能這樣做,那麼你可能想要將值移動到正確的範圍,在負數中加上m,直到得到一個在[0..m)範圍內的數字,這樣它就符合mod,然後用它作爲你的索引。

+0

方式,以便例如,如果我有K = 4,則11模式4 = -6,所以我應該把鑰匙放在索引= 5的插槽裏? – user355002 2010-06-23 04:22:58

+0

我編輯我的例子是否正確?我也在你的回答中使用你的版本:) – user355002 2010-06-23 04:33:05

+0

@ matin1234:這對我來說看起來不太合適。 4 mod 11應該是4,所以最終會在索引4處。那麼15 mod 11也是4,所以(使用線性探測)將會在索引5處結束。 – 2010-06-23 14:09:44