基础实验5-2.1 整型关键字的平方探测法散列 (25分)

Posted snzhong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础实验5-2.1 整型关键字的平方探测法散列 (25分)相关的知识,希望对你有一定的参考价值。

技术图片

 

 

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <malloc.h>
typedef enum {false,true
             } bool;

bool IsPrime(int n) {
    if(n==0||n==1)
        return false;
    if(n>2) {
        int i;
        for(i=2; i<=sqrt(n)+1; i++) {
            if(n%i==0)return false;
        }
    }
    return true;
}
int NextPrime(int n) {
    int i=n+1;
    while(1) {
        if(IsPrime(i))
            return i;
        i++;
    }
    return i;
}
int main() {
    int m,n;
    scanf("%d %d",&m,&n);
    if(!IsPrime(m))
        m=NextPrime(m);
    int H[m];
    memset(H,0,sizeof(H));
    int a[n];
    int i,x;
    for(i=0; i<n; i++) {
        scanf("%d",&x);
        int key=x%m;
        int d,tmp=key;
        for(d=0; d<m; d++) {
            key=tmp+d*d;
            if(!H[key%m]) {
                H[key%m]=1;
                a[i]=key%m;
                break;
            }
        }
        if(d==m)
        {
            a[i]=-1;
        }
    }
    for(i=0; i<n; i++) {
        if(i)
            printf(" ");
        if(a[i]==-1)
            printf("-");
        else
            printf("%d",a[i]);
    }
    return 0;
}

 

以上是关于基础实验5-2.1 整型关键字的平方探测法散列 (25分)的主要内容,如果未能解决你的问题,请参考以下文章

散列查找-平方探测法

数据结构—— 散列查找:冲突处理方法

散列·跳房子散列

数据结构—— 散列查找:散列表的性能分析

Hash冲突的解决方法

2021数据结构与算法实验合集