散列查找

本文探讨了散列查找的基本原理,介绍了两种实现方式:一种是通过自己编写的散列函数,另一种是利用C++标准库中的unordered_map。通过实例展示了如何使用散列表进行查找操作,以及它们在效率和代码简洁性上的差异。
摘要由CSDN通过智能技术生成

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值