哈希查找(Hash Searching)是一种基于哈希表实现的查找算法。它通过将查找元素的关键字映射到哈希表中的位置来进行查找。
下面是一个简单的Java实现哈希查找的例子:
import java.util.Arrays;
public class Main {
private static final int SIZE = 10; // 哈希表大小
private int[] table; // 哈希表
public Main() {
table = new int[SIZE];
Arrays.fill(table, -1); // 初始化哈希表,-1表示该位置没有元素
}
// 哈希函数,将关键字映射到哈希表中的位置
private int hash(int key) {
return key % SIZE;
}
// 插入元素
public void insert(int key) {
int index = hash(key);
while (table[index] != -1) { // 处理哈希冲突
index = (index + 1) % SIZE;
}
table[index] = key;
}
// 查找元素
public boolean search(int key) {
int index = hash(key);
while (table[index] != -1) { // 处理哈希冲突
if (table[index] == key) {
return true;
}
index = (index + 1) % SIZE;
}
return false;
}
// 删除元素
public void delete(int key) {
int index = hash(key);
while (table[index] != -1) { // 处理哈希冲突
if (table[index] == key) {
table[index] = -1;
return;
}
index = (index + 1) % SIZE;
}
}
public static void main(String[] args) {
Main hashSearch = new Main();
hashSearch.insert(2);
hashSearch.insert(5);
hashSearch.insert(9);
hashSearch.insert(12);
System.out.println(hashSearch.search(5)); // true
System.out.println(hashSearch.search(8)); // false
hashSearch.delete(5);
System.out.println(hashSearch.search(5)); // false
}
}
在这个例子中,我们使用一个长度为10的整型数组实现哈希表,哈希函数采用取余运算。当产生哈希冲突时,我们采用线性探测法来处理,即顺次查找下一个位置直到找到空位置为止。在实现了插入、查找和删除操作之后,我们对哈希表进行了测试。