SWUSTOJ 1013: 哈希表(开放定址法处理冲突)

简介: SWUSTOJ 1013: 哈希表(开放定址法处理冲突)

1013: 哈希表(开放定址法处理冲突)


题目描述


采用除留余数法(H(key)=key %n)建立长度为n的哈希表,处理冲突用开放定址法的线性探测。


输入

第一行为哈希表的长度n; 第二行为关键字的个数; 第三行为关键字集合; 第三行为要查找的数据。


输出

如果查找成功,输出关键字所哈希表中的地址和比较次数;如果查找不成功,输出-1。


样例输入

13

11

16 74 60 43 54 90 46 31 29 88 77

16


样例输出

3,1


#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 200003, null = 0x3f3f3f3f;
int size;
int h[N];
int cnt;
int find(int u)
{
  int t = u%size;
  cnt = 1;
  while(h[t]!=null&&h[t]!=u){
    cnt++;
    t++;
    if(t == size) t = 0;
  }
  return t;
}
int main()
{
  int n;
  memset(h,0x3f,sizeof h);
  cin>>size>>n;
  while(n--)
  {
    int tmp;
    cin>>tmp;
    h[find(tmp)] = tmp;
  }
  int f;
  cin>>f;
  if(h[find(f)] == null) cout<<"-1";
  else cout<<find(f)<<","<<cnt;
  return 0;   
}
目录
相关文章
|
1月前
|
存储 缓存 数据库
哈希表
【10月更文挑战第24天】哈希表是一种非常实用的数据结构,它在各种计算机应用中发挥着重要作用。通过深入了解哈希表的原理、实现和应用,我们可以更好地利用它来解决实际问题。
|
7月前
|
存储 算法 Java
【算法系列篇】哈希表
【算法系列篇】哈希表
|
6月前
|
存储
哈希表的设计与实现
哈希表的设计与实现
50 1
|
存储 算法 Serverless
|
7月前
|
存储 算法 Java
算法系列--哈希表
算法系列--哈希表
42 0
|
存储 Serverless
不允许你还没有了解哈希表、哈希桶、哈希冲突的解决,如何避免冲突
不允许你还没有了解哈希表、哈希桶、哈希冲突的解决,如何避免冲突
95 0
|
存储 缓存 算法
趣味算法——探索哈希表的神秘世界
前言: 在编程世界中,数据存储和检索的效率常常是我们关注的重点。对于这个问题,哈希表提供了一个既高效又实用的解决方案。哈希表是一种通过哈希函数将键转化为数组索引,以实现快速查找的数据结构。在大多数情况下,哈希表能够在常数时间内完成查找,插入和删除操作,因此在许多应用场景中得到了广泛使用。
72 0
趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突
导读: 本文从哈希表传统设计与解决思路入手,深入浅出地引出新的设计思路:从尽量规避哈希冲突,转向了利⽤合适的哈希冲突概率来优化计算和存储效率。新的哈希表设计表明 SIMD 指令的并⾏化处理能⼒的有效应⽤能⼤幅度提升哈希表对哈希冲突的容忍能⼒,进⽽提升查询的速度,并且能帮助哈希表进⾏极致的存储空间压缩。
|
存储 数据库
第 9 章 哈希表
散列表(Hash table, 也叫哈希表) ,是根据关键码值(Key value)而直接进行访问的数据结构。
95 1
|
存储 Java Serverless
哈希表(重要)
哈希表(重要)
162 0
哈希表(重要)