哈希查找(数据结构实训)

题目:

哈希查找
标准输入输出
题目描述:
实现哈希查找。要求根据给定的哈希函数进行存储,并查找相应元素的存储位置。本题目使用的哈希函数为除留取余法,即H(key)=key%m,其中m为存储空间,冲突处理方法采用开放定址法中的线性探测再散列,即Hi=(H(key)+i)/%m,0<=i<=m-1。
输入:
输入包含若干个测试用例,第一行为测试用例个数。每个测试用例占3行,第一个为元素个数m,第二行为m个元素值,即需要进行散列存储的元素个数,同时也是存储空间个数(空间位置从0开始存储),第三行为需要查找的元素。
输出:
对每一测试用例,分别用两行输出,第一行输出所有的元素,要求按存储地址从0开始输出,用空格隔开,第二行输出需要查找的元素在数组中的位置,即对应数组中的下标。

输入样例:
1
5
2 4 1 7 9
7

输出样例:
9 1 2 7 4
3

代码:

采用开放寻址法,线性探测

不理解开放寻址法的可以看一下我的博客:模拟散列表(哈希表的两种方法)

import java.util.Scanner;

public class Xingyuxingxi {
    public static void main(String[] args)
    {
        Scanner sc=new Scanner(System.in);
        int a= sc.nextInt();
        while(a--!=0) {
            int m = sc.nextInt();
            int[] c = new int[m];
            int[] g = new int[m];
            int n = 0;
            for (int i = 0; i < m; i++) {
                c[i] = sc.nextInt();
                int k = c[i] % m ;//注意是key%m即可
                while (g[k] != c[i] && g[k] != 0) {
                    k++;
                    if (k == m) k = 0;
                }
                g[k] = c[i];
            }
            int d = sc.nextInt();
            int xb=0;
            for (int i = 0; i <m; i++) {
                System.out.print(g[i] + " ");
                if (g[i] == d) {
                    xb = i;
                }
            }
            System.out.println();
            System.out.println(xb);
        }
    }
}

相关推荐

  1. 查找(数据结构)

    2023-12-07 18:10:07       44 阅读
  2. 查找数据结构

    2023-12-07 18:10:07       34 阅读
  3. 折半查找(数据结构)

    2023-12-07 18:10:07       41 阅读
  4. 顺序查找(数据结构)

    2023-12-07 18:10:07       36 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-07 18:10:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-07 18:10:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-07 18:10:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-07 18:10:07       20 阅读

热门阅读

  1. npm 更换镜像

    2023-12-07 18:10:07       32 阅读
  2. vue2使用npm依赖包导出xlsx文件

    2023-12-07 18:10:07       40 阅读
  3. 目标检测开源数据

    2023-12-07 18:10:07       45 阅读
  4. ARMV8 - A64 - 存储器读写指令

    2023-12-07 18:10:07       31 阅读
  5. 记录一下npm包的关键字段

    2023-12-07 18:10:07       42 阅读
  6. TCP套接字编写

    2023-12-07 18:10:07       36 阅读
  7. pm2部署vue项目,Vue项目的部署在服务器

    2023-12-07 18:10:07       33 阅读
  8. StarRocks 存算分离最佳实践,让降本增效更简单

    2023-12-07 18:10:07       40 阅读
  9. STM32h7 接收各种can id情况下滤波器的配置

    2023-12-07 18:10:07       33 阅读
  10. 解决SpringBoot jar包下resources目录下文件读取不到

    2023-12-07 18:10:07       41 阅读