0
点赞
收藏
分享

微信扫一扫

【查找】对于指定长度为N的整数数组,存储于指定长度为M的散列表中(使用的散列函数是模M运算),若使用链地址法(这里指的是:若位置相同,就存储于同一位置)处理冲突,编程计算查找成功时平均查找(java)

输入样例:

第一行二个整数,表示待存储的元素个数N,拟存储的散列表长度(散列函数模除的数也是它),第二行是N个以空格分隔的整数。

9 11
47 7 29 11 16 92 22 8 3

输出样例:

分别在两行中输出查找成功时平均查找长度和查找失败时的平均查找长度。
注意,请表达成总查找长度除以总查找次数的未约分形式(如:查找成功有10次,总共查找了30次,成功的平均查找长度为:30/10)。

12/9
20/11

代码如下: 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
        int go = input.nextInt();
        int[] arr = new int[go];
        for (int i = 0; i < number; i++) {
            int temp = input.nextInt();
            arr[temp%go]++;
        }
        int num1 = 0 ,num2 = 0;
        for (int i = 0; i < go; i++) {
            int len = arr[i];
            num1 += len*(len+1)/2;
            num2 += len + 1;
        }
        System.out.println(num1+"/"+number);
        System.out.println(num2+"/"+go);
    }
}

 

举报
0 条评论