如何用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
相關文章
- [譯] 如何用 Android vitals 解決應用程式的質量問題Android
- 【解決方法】正常遊覽Flash頁面,解決主流遊覽器的不支援問題(如Edge,Firefox)Firefox
- Double型別轉換成BigDicimal問題型別
- 【圖解經典演算法題】如何用一行程式碼解決約瑟夫環問題圖解演算法行程
- 提問題比解決問題更重要
- 解決跨域問題跨域
- SERVICE問題解決方法
- 解決 Unexpectedlexicaldeclarationincaseblock的問題BloC
- 解決mapper重名問題APP
- qeephp 解決跨越問題PHP
- 解決高度塌陷問題
- 如何用分散式鎖解決陪玩平臺原始碼中的併發問題?分散式原始碼
- 解決 github 訪問不了的問題Github
- 解決github訪問慢的問題Github
- 解決 Github 國內訪問問題Github
- No module named MYSQLdb 問題解決MySql
- rabbitmq解決erlang版本問題MQ
- 解決高度塌陷、定位問題
- display:flex解決的問題Flex
- As常見問題解決方法
- WebSocket跨域問題解決Web跨域
- 解決中文亂碼問題
- Java解決跨域問題Java跨域
- Flask解決跨域問題Flask跨域
- MySQL 中文 like 問題解決MySql
- CROS 解決跨域問題ROS跨域
- thinkphp-queue問題解決PHP
- sql多參問題解決SQL
- 解決所有環境問題
- windows解決埠占用問題Windows
- 解決問題通用方法論
- git常見問題解決Git
- SignalR跨域問題解決SignalR跨域
- 解決docker換源問題Docker
- cors解決跨域問題CORS跨域
- OOM問題解決實踐OOM
- mysql大小寫問題解決MySql
- 磁碟問題定位與解決