/**
* 哈希查找算法
* @author hp
*/
public class Test {
private int Max;
private int[] hashtable;
int func(int value){
return value %Max; /*哈希函数*/
}
/*自定义search()函数,实现哈希查找*/
Object search(int key){
int pos,t;
pos = func(key); //哈希函数确定出的位置
t = pos; //t存放确定出的位置
while (hashtable[t] !=key && hashtable[t]!=-1) { //如果该位置上不等于要找的关键字且不为空
t=(t+1)%Max; //利用线性探测求出下一个位置
if(pos==t){ //如果经多次探测又回到原来的哈希函数求出的位置,则说明要查找的数不在
return -1;
}
}
if(hashtable[t]==-1) //如果探测的数字是-1,则说明要查找的数不存在
return null;
else
return t;
}
/*自定义createhash()函数,实现哈希表创建*/
void createhase(int key){
int pos,t;
pos = func(key); //哈希函数确定元素的位置
t = pos;
while (hashtable[t]!=-1) { //如果该位置有元素存在,则进行线性探测再散列
t=(t+1)%Max;
if(pos==t) //如果冲突处理后确定的位置与原位置相同,则说明哈希表已满
return;
}
hashtable[t] = key; //将元素放入确定的位置
}
}
哈希查找算法
最新推荐文章于 2021-02-25 23:09:07 发布