1.定义
在进行查找时,在记录的存储位置与它的关键字之间建立一个确定的对应关系h,以线性表中每个元素的关键字K为自变量,通过函数h(K)计算出该元素的存储位置,我们将h函数称为散列函数或哈希函数。这种查找方法称为散列查找。
2.自己实现的
#include<iostream>
#include<cstdio>
using namespace std;
int arr[100];
//定义散列表
bool hashTable[10000000];
int main(){
int n;
scanf("%d",&n);
for(int i = 0; i < n; ++i){
scanf("%d",&arr[i]);
hashTable[arr[i]] = true;
}
int m;
scanf("%d",&m);
for(int i = 0;i < m; ++i){
int target;
scanf("%d",&target);
if(hashTable[target]){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}
2.系统自带的
#include<iostream>
#include<cstdio>
#include<tr1/unordered_map>//在unordered_map之前加上tr1库名,
using namespace std::tr1;//与此同时需要加上命名空间
int arr[100];
//系统自带的散列表
unordered_map<int, bool> hashTable;
int main(){
int n;
scanf("%d",&n);
for(int i = 0; i < n; ++i){
scanf("%d",&arr[i]);
hashTable[arr[i]] = true;
}
int m;
scanf("%d",&m);
for(int i = 0;i < m; ++i){
int target;
scanf("%d",&target);
if(hashTable[target]){
printf("YES\n");
}else{
printf("NO\n");
}
}
return 0;
}