针对10,100,32,45,58,126,3,29,200,400,0利用除商留余法构造存于长度为13的数据的HASH
解决方案 »
- java将画面中输入的内容,写入到指定的Excel文件的指定的行列中。
- 如何把数据库中表user_list的内容在我的Eclipse显示窗口中,用什么方法?请求高手,谢谢~
- java基础知识。。。关于移位(不知道这样表达对不。。看题)
- 帮我做个程序利用图形界面编一个类似驾驶理论考试的程序 至少包括10个题目 5个选择 5个判断
- 关于ArrayList的问题
- 一个问题想不透,请大家帮忙
- 大家帮我看看这个程序!
- java新手关于Apache 和Tomcat 的问题
- 环境变量的问题!!!!!!!!
- 超级基础问题
- 求SSH2这个包的源码
- 我现在有一个字符串,跟我一个类的名字一样,怎么样可以根据这个字符串得到这个类啊?
public static void main(String[] args) {
int[] k = new int[] { 10, 100, 32, 45, 58, 126, 3, 29, 200, 400, 0 };
int[] n = new int[k.length];
int[] hash = new int[13];
createHashTable(k, n, hash);
System.out.println("------------------");
getNumber(hash, 32);
getNumber(hash, 1000);
}
private static void getNumber(int[] hash, int i) {
int k = i % 13;
while (hash[k] != i) {
k ++;
if (k == 13) {//回到表头
k = 0;
}
if (hash[k] == 13) {
System.out.println("没有你找的数!");
return;
}
}
System.out.println(hash[k]);
} private static void createHashTable(int[] k, int[] n, int[] hash) {
for (int i = 0; i < k.length; i++) {
n[i] = k[i] % 13;//13
}
for (int i = 0; i < hash.length; i ++) {
hash[i] = 13;//初始化
}
for (int i = 0; i < k.length; i++) {
if (hash[n[i]] == 13) {
hash[n[i]] = k[i];
} else {
while (hash[n[i]] != 13) {//处理冲突
if (n[i] == hash.length) {//循环到开始处
n[i] = 0;
}
n[i]++;
}
hash[n[i]] = k[i];
}
}
for (int i = 0; i < k.length; i++) {
System.out.println(hash[i]);
}
}
}
int seed = 131; // 31 131 1313 13131 131313 etc..
int hash = 0;
for (int i = 0; i < key.length(); i++) {
hash = (hash * seed + key.charAt(i)) & 0xfffff;
}
return hash;
}