如何用double hashing解決collision resolution問題
如何在hash table裡解決collision resolution問題
有一道程式碼題是如何使用開放定址(open addressing)用下面的公式解決hash table裡面的碰撞問題。
A[((k mod N) + 2*i) mod N
這裡的A是一個integer array,用作hash table。假設hash table裡面有10個插槽。
Keys = 8, 5, 13, 7, 2, 18, 6, 11
keys都是正數,這裡,如果插槽等於0,說明插槽是空的,就可以插入keys裡面的值。
程式碼如下
public static void main(String[] args) {
int number = 10;
int[] A = new int [number];
int[] Keys = {8, 5, 13, 7, 2, 18, 6, 11};
for (int i = 0; i < Keys.length; i++) {
int j = 0;
// 這是i的位置變數
int Position = (Keys[i] % N + 3*j) % N;
// 當插槽不為空的時候
while (A[Position] != 0) {
j = j + 1;
// 這是j的位置變數
Position = (Keys[i] % N + 3*j) % N;
}
//把i賦值給A
A[Position] = Keys[i];
}
for (int i = 0; i < A.length; i++) {
System.out.println(A[i]);
}
}
2018-03-24
相關文章
- 解決double型別相減有誤差的問題型別
- 如何用模式解決下面這個問題模式
- 如解決jquery與原生js衝突的問題jQueryJS
- 解決「問題」,不要解決問題
- 解決問題
- [譯] 如何用 Android vitals 解決應用程式的質量問題Android
- 【解決方法】正常遊覽Flash頁面,解決主流遊覽器的不支援問題(如Edge,Firefox)Firefox
- 請問,在JSP開發中,如何用執行緒解決這個問題?JS執行緒
- 發現問題,解決問題
- yum問題解決
- sqlitedabaseislocked問題解決SQLite
- dump 解決問題
- 【圖解經典演算法題】如何用一行程式碼解決約瑟夫環問題圖解演算法行程
- Temporary failure in name resolution - DNS引發的問題和思考AIDNS
- Double型別精度問題引起的錯誤型別
- 開發中遇到的float double精度問題
- Double型別轉換成BigDicimal問題型別
- 如何用Autoincrement,sequence問題REM
- 提問題比解決問題更重要
- SERVICE問題解決方法
- 解決高度塌陷問題
- qeephp 解決跨越問題PHP
- bg配置問題解決
- git ssl 問題解決Git
- AIX問題解決思路AI
- WAS startnode hang問題解決
- 解決grub rescue問題
- 解決跨域問題跨域
- 如何用分散式鎖解決陪玩平臺原始碼中的併發問題?分散式原始碼
- Ubuntu 16.04 Vysor 破解 和黑屏問題解決+ 閃屏問題解決Ubuntu
- 【問題解決】單機搭建dataguard的問題
- MySQL could not be resolved: Temporary failure in name resolution報錯解決方法MySqlAI
- Resolving failed: Temporary failure in name resolution 錯誤解決方法AI
- 解決 Github 國內訪問問題Github
- 解決github訪問慢的問題Github
- 解決 github 訪問不了的問題Github
- 黑蘋果的問題解決蘋果
- thinkphp-queue問題解決PHP