散列查找

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;
}

 

上一篇:力扣--两数之和--C++版


下一篇:java集合-哈希表HashTable