算法与数据结构:散列表的Java实现
Posted 小乖乖的臭坏坏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法与数据结构:散列表的Java实现相关的知识,希望对你有一定的参考价值。
例子:假设有一个数组{2,18,15,28},现在要把他们存入散列表,并且要根据散列表判断某一个元素是否在数组中出现。
代码:
public class HashSearch {
public static void main(String[] args) {
int m = 13;
int[] arr = new int[]{2,18,15,28};
int[] hash_table = new int[m];
for(int i=0;i<m;i++){
hash_table[i] = Integer.MIN_VALUE;
}
for(int i=0;i<arr.length;i++){
int temp = insert(hash_table, arr[i]);
hash_table[temp] = arr[i];
}
System.out.println("打印散列表:");
for(int i=0;i<m;i++){
System.out.print(hash_table[i] + " ");
}
int test_number = 18;
System.out.println("\\n" + test_number + "在数组中是否存在?\\n" + (search(hash_table, test_number) != Integer.MIN_VALUE));
test_number = 9;
System.out.println("\\n" + test_number + "在数组中是否存在?\\n" + (search(hash_table, test_number) != Integer.MIN_VALUE));
}
public static int h1(int key){
return (key % 13);
}
public static int h2(int key){
return 1 + (key % (13-1));
}
public static int h(int key, int i){
return (h1(key + i * h2(key)) % 13);
}
public static int insert(int[] T, int key){
int i=0;
while(true){
int j = h(key, i);
if(T[j]==Integer.MIN_VALUE){
T[j] = key;
return j;
}
else{i++;}
}
}
public static int search(int[] T, int key){
int i = 0;
while(true){
int j = h(key, i);
if(T[j] == key){
return j;
}
else if(T[j] == Integer.MIN_VALUE || i >= 13){
return Integer.MIN_VALUE;
}
else {i++;}
}
}
}
输出:
打印散列表:
-2147483648 -2147483648 2 -2147483648 -2147483648 18 15 28 -2147483648 -2147483648 -2147483648 -2147483648 -2147483648
18在数组中是否存在?
true
9在数组中是否存在?
false
以上是关于算法与数据结构:散列表的Java实现的主要内容,如果未能解决你的问题,请参考以下文章