哈希查找算法

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

    原文作者:查找算法
    原文地址: https://blog.csdn.net/zhou0yan/article/details/19691347
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞