网站建设 php jsp .net,中国创业商机网,广州网站排名怎么优化,一般通过人体的电流超过多大题目#xff1a; 哈希查找 标准输入输出 题目描述#xff1a; 实现哈希查找。要求根据给定的哈希函数进行存储#xff0c;并查找相应元素的存储位置。本题目使用的哈希函数为除留取余法#xff0c;即H(key)key%m#xff0c;其中m为存储空间#xff0c;冲突处理方法采用开…题目 哈希查找 标准输入输出 题目描述 实现哈希查找。要求根据给定的哈希函数进行存储并查找相应元素的存储位置。本题目使用的哈希函数为除留取余法即H(key)key%m其中m为存储空间冲突处理方法采用开放定址法中的线性探测再散列即Hi(H(key)i)/%m0im-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 scnew 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 xb0;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);}}
}