zoukankan      html  css  js  c++  java
  • 散列2 Hashing

    题目:https://pintia.cn/problem-sets/1268384564738605056/problems/1294124786527993857
    题解:https://blog.csdn.net/Invokar/article/details/80372316
    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int GetNextPrime(int x)
    {   /* 若为偶数,找当前数下一个最小的素数 */
        if (x == 1)      // 1不是素数 
            return 2;
        int i, p = x % 2 == 1 ? x : x+1;
        while (1)
        {
            for (i = sqrt(p); i >= 2; i--)
                if (p % i == 0)
                    break;
            if (i == 1)
                break;
            else
                p += 2;
        }   
        return p;
    }
    
    int Hash(int key, int TableSize)
    {   /* 获取映射 */
        return key % TableSize;
    }
    
    int main(int argc, char const *argv[])
    {
        int TableSize, N, x, pos, tempPos;
        scanf("%d %d", &TableSize, &N);
        TableSize = GetNextPrime(TableSize);
        int A[TableSize];
        for (int i = 0; i < TableSize; i++)
            A[i] = 0;
        for (int i = 0; i < N; i++)
        {
            if (i != 0)     /* 规格化输出格式 */
                printf(" ");
            scanf("%d", &x);
            pos = Hash(x, TableSize);
            tempPos = pos;
            if (A[tempPos] == 0)
            {   /* 如果当前下标未被使用 */
                A[tempPos] = x;
                printf("%d", pos);
            }
            else
            {
                int cnt, flag = 0;
                for (cnt = 1; cnt < TableSize; cnt++)
                {
                    pos = Hash(tempPos + cnt*cnt, TableSize);
                    if (A[pos] == 0)
                    {   /* 如果找到不冲突的点 */
                        flag = 1;
                        A[pos] = x;
                        printf("%d", pos);
                        break;
                    }
                }
                if (flag == 0)
                    printf("-");
            }
        }
        return 0;
    }
  • 相关阅读:
    单词 统计
    第九周周进度报告
    日常总结
    Docker 初识
    读书笔记
    《未来简史》有感
    自己的Java规范文档
    nginx自动部署脚本
    jdk 自动化脚本
    我Java学习时的模样(三)
  • 原文地址:https://www.cnblogs.com/simon-chou/p/13620142.html
Copyright © 2011-2022 走看看