java数据结构——Hash的实现(数组) 线性探测的方法解决冲突
2016-10-07 10:37
489 查看
//Hash表的设计
//所谓数据结构,就是对数据的组织方式,通过设计合理的数据组织方式,可以高效的解决某类应用问题。
class Hash1{
public int[] hArray;
public int s;
public Hash1(int size){
hArray=new int[size];
s=size;
for(int i=0;i<s;i++){
hArray[i]=0;
}
}
public void insert(int n){
int index=n%s;
while(hArray[index]!=-1&&hArray[index]!=0){
index=(index+1)%s;
}
hArray[index]=n;
}
public int find(int key){
int i=key%s;
while(true){
if(hArray[i]==key)
return i;
else if(hArray[i]==0)
return -1;
else
i=(i+1)%s;
}
}
public boolean delete(int key){
int i=key%s;
while(true){
if(hArray[i]==key){
hArray[i]=-1;
return true;
}
else if(hArray[i]==0)
return false;
else
i=(i+1)%s;
}
}
public void showHash(){
for(int i=0;i<s;i++){
if(hArray[i]==0||hArray[i]==-1)
continue;
else
System.out.print(hArray[i]+" ");
}
}
}
public class HashTest{
public static void main(String[] args){
Hash1 hs=new Hash1(17);
hs.insert(1);
hs.insert(20);
hs.insert(7);
hs.insert(8);
hs.insert(23);
hs.insert(21);
hs.insert(3);
hs.showHash();
}
}
//所谓数据结构,就是对数据的组织方式,通过设计合理的数据组织方式,可以高效的解决某类应用问题。
class Hash1{
public int[] hArray;
public int s;
public Hash1(int size){
hArray=new int[size];
s=size;
for(int i=0;i<s;i++){
hArray[i]=0;
}
}
public void insert(int n){
int index=n%s;
while(hArray[index]!=-1&&hArray[index]!=0){
index=(index+1)%s;
}
hArray[index]=n;
}
public int find(int key){
int i=key%s;
while(true){
if(hArray[i]==key)
return i;
else if(hArray[i]==0)
return -1;
else
i=(i+1)%s;
}
}
public boolean delete(int key){
int i=key%s;
while(true){
if(hArray[i]==key){
hArray[i]=-1;
return true;
}
else if(hArray[i]==0)
return false;
else
i=(i+1)%s;
}
}
public void showHash(){
for(int i=0;i<s;i++){
if(hArray[i]==0||hArray[i]==-1)
continue;
else
System.out.print(hArray[i]+" ");
}
}
}
public class HashTest{
public static void main(String[] args){
Hash1 hs=new Hash1(17);
hs.insert(1);
hs.insert(20);
hs.insert(7);
hs.insert(8);
hs.insert(23);
hs.insert(21);
hs.insert(3);
hs.showHash();
}
}
相关文章推荐
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- java 解决Hash(散列)冲突的四种方法--开放定址法(线性探测,二次探测,伪随机探测)、链地址法、再哈希、建立公共溢出区
- 数据结构 c语言实现哈希(hash)表查找 除留余数法构建hash函数开放定值法线性探测处理冲突
- 【数据结构】哈希表实现--链地址解决冲突(Java实现)
- HashMap的实现原理及hash冲突解决方法
- 数据结构-线性表的数组实现-Java
- hash线性探测开放定址法解决冲突
- 散列表(三)冲突处理的方法之开地址法: 线性探测再散列的实现
- java基础--HashMap解决hash冲突的方法
- Hash解决冲突之线性探测
- 每日一省之—使用线性探测法(仅利用数组作为底层数据结构)实现HashMap
- 采用线性探测方法解决冲突
- hash冲突的解决方法以及hashMap的底层实现
- Java 数据结构之数组的操作三:实现各种排序方法
- hash线性探测开放定址法解决冲突
- 散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)
- java数据结构:线性表之数组实现
- 散列表(三):冲突处理的方法之开地址法(线性探测再散列的实现)
- 哈希表冲突的两个解决方法线性探测和分离链接法
- 数据结构_Hash通过liner的方法解决冲突