哈希查找算法

/**
 * 哈希查找算法
 * @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;		//将元素放入确定的位置
	}
	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值