您的位置:首页 > 编程语言 > Java开发

散列表Java实现

2016-02-18 15:55 519 查看
package 散列表;

import java.util.Scanner;

public class HashSearch {

public static int data[] = {69,65,90,37,92,6,28,54};
public static int hash[] = new int[13];

//将关键字插入到散列表中
public static void insertHash(int hash[],int m,int data){
int i = 0;
i = data%13;//计算散列位置
while (hash[i] >0) {//位置已经被占用
i = (++i)%m;//先行探索解决冲突
}
hash[i] = data;
}

//创建散列表
public static void createHash(int hash[],int m,int data[],int n){
for (int i = 0;i<hash.length;i++) {
hash[i] = 0;
}
for (int i = 0;i<n;i++) {
insertHash(hash, m, data[i]);
}

}

//散列表的查找函数的编写
public static int hashSearch(int [] hash,int m,int key){
int i = 0;
i = key%13;
while (hash[i] > 0 && hash[i] != key) {//判断是不是冲突
i = (++i)%m;
}
if (hash[i] == 0) {
return -1;
}else{
return i;
}

}

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//调用函数创建散列表
createHash(hash, 13, data, 8);
System.out.println("散列表各元素的值:");
for(int i = 0;i<13;i++){
System.out.print(hash[i]+" ");
}
System.out.println();
System.out.println("输入查找的关键字");
int key = input.nextInt();
int pos = hashSearch(hash, 13, key);
if (pos > 0) {
System.out.printf("查找成功,该关键字位于数组的第%d个位置\n",pos);
}else{
System.out.println("查找失败!");
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: