基本哈希函数

【细嚼慢咽大数据】第一章——数据挖掘基本概念,邦弗朗尼原理,IF.IDF指标,哈希函数 1 数据挖掘的定义:数据挖掘是数据“模型”的发现过程。    统计学家认为数据挖掘就是统计模型的构建过程,而这个统计模型指的就是可见数据所遵从的总体分布。 2 模型: 建模方法可以描述为下列两种做法之一: (1)对数据进行简洁的近似汇总描述;——数据汇总 (2)从数据中抽取出最突出的特征来代替数据并将剩余内容忽略。——特征提取 3 数据汇总 (1)PageRank:一 阅读详情
// SDBM Hash
unsigned int SDBMHash(char *str)
{
    unsigned int hash = 0;
 
    while (*str)
    {
        // equivalent to: hash = 65599*hash + (*str++);
        hash = (*str++) + (hash << 6) + (hash << 16) - hash;
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// RS Hash 
unsigned int RSHash(char *str)
{
    unsigned int b = 378551;
    unsigned int a = 63689;
    unsigned int hash = 0;
 
    while (*str)
    {
        hash = hash * a + (*str++);
        a *= b;
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// JS Hash 
unsigned int JSHash(char *str)
{
    unsigned int hash = 1315423911;
 
    while (*str)
    {
         hash ^= ((hash << 5) + (*str++) + (hash >> 2));
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// P. J. Weinberger Hash 
unsigned int PJWHash(char *str)
{
    unsigned int BitsInUnignedInt = (unsigned int)(sizeof(unsigned int) * 8);
    unsigned int ThreeQuarters = (unsigned int)((BitsInUnignedInt  * 3) / 4);
    unsigned int OneEighth = (unsigned int)(BitsInUnignedInt / 8);
    unsigned int HighBits = (unsigned int)(0xFFFFFFFF) << (BitsInUnignedInt unsigned int SDBMHash(char *str) - OneEighth);
    unsigned int hash = 0;
    unsigned int test = 0;
 
    while (*str)
    {
        hash = (hash << OneEighth) + (*str++);
        if ((test = hash & HighBits) != 0)
        {
            hash = ((hash ^ (test >> ThreeQuarters)) & (~HighBits));
        }
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// ELF Hash 
unsigned int ELFHash(char *str)
{
    unsigned int hash = 0;
    unsigned int x = 0;
 
    while (*str)
    {
        hash = (hash << 4) + (*str++);
        if ((x = hash & 0xF0000000L) != 0)
        {
             hash ^= (x >> 24);
             hash &= ~x;
        }
     }
 
     return (hash & 0x7FFFFFFF);
}
 
// BKDR Hash 
unsigned int BKDRHash(char *str)
{
    unsigned int seed = 131; // 31 131 1313 13131 131313 etc..
    unsigned int hash = 0;
 
    while (*str)
    {
         hash = hash * seed + (*str++);
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// DJB Hash 
unsigned int DJBHash(char *str)
{
    unsigned int hash = 5381;
 
    while (*str)
    {
        hash += (hash << 5) + (*str++);
    }
 
    return (hash & 0x7FFFFFFF);
}
 
// AP Hash 
unsigned int APHash(char *str)
{
    unsigned int hash = 0;
    int i;
 
    for (i=0; *str; i++)
    {
         if ((i & 1) == 0)
         {
              hash ^= ((hash << 7) ^ (*str++) ^ (hash >> 3));
         }
         else
         {
              hash ^= (~((hash << 11) ^ (*str++) ^ (hash >> 5)));
         }
     }
 
     return (hash & 0x7FFFFFFF);
}

哈希表的基本概念详解以及具体实现(哈希函数、哈希冲突、负载因子) 一、哈希表 哈希表是一个典型的用空间换时间的操作,利用数组随机访问的特性,最大化查找效率。哈希过程就是将数组元素与下标建立关系的过程。 二、哈希函数 1、哈希函数的意义: 哈希表是希望将元素与下标建立关系,那么当多个元素之间跨度较大时,我们不可能浪费大量的空间来完成这个存储的过程,就需要通过哈希函数。将下标控制在一定的范围内,就是将我们要存储的键值中的“键”利用特定的哈希函数计算得到一个整型作为数组的索引。 2、哈希函数的设计 (1)当key为整型时 当我们的“键”是一个整型的时候,就利用直接取模的方法,通 阅读详情

相关推荐

案例分析|一篇文章带你看懂养鸡场智慧管理系统

养鸡场智慧管理系统是为了满足现代化养鸡业对精细化管理的需求而设计的一款专业软件。随着科技的发展和农业产业的升级,传统的手工记录和管理方式已无法满足高效、准确和实时的数据跟踪需求。本软件旨在通过集成各种功能模块,帮助养鸡场主实现从鸡苗孵化、饲养管理、饲料控制到销售结算等全链条的智能化操作。该系统的核心目标是提升养鸡场的运营效率和盈利能力,通过自动化数据处理,减少人工误差,节省时间和精力。例如,孵化报表和记录模块可以帮助管理者实时监控孵化过程,及时调整策略;

muyu2980的专栏 930

常见的Hash算法

简介哈希方法学哈希函数和素数位偏移各种形式的哈希常用的哈希函数各版本哈希代码下载简介哈稀函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量。一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate)。一般来说,对任意一类的数据存在一个理论上完美的哈希函数。这个完美的哈希函数定义是没有发生任何碰撞,这意味着没有出现重复的散列值。在现实中它很难找到一个完美的哈希散

eaglex的专栏 4万+

电力现货市场出清机制与节点电价计算实战解析

本文深入解析了电力现货市场的出清机制,特别是节点边际电价的计算原理与实战应用。通过一个基于Matlab和IEEE30节点系统的完整案例,详细演示了如何利用最优潮流模型求解市场出清价格,并提取节点电价,揭示了电网阻塞如何影响实时电价的形成。

weixin_29061425的博客 952

字符串hash算法比较

字符串hash算法比较 1 概述 链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,但Hash链表查找的时间效率为O(1)。 设计高效算法往往需要使用Hash链表,常数级的查找速度是任何别的算法无法比拟的,Hash链表的构造和冲突的不同实现方法对效率当然有一

一盅两件 2373

课程复习---分析空间数据的细胞空间关系(python版本的mistyR)

课程复习---分析空间数据的细胞空间关系(python版本的mistyR)

weixin_53637133的博客 1222

SCS 43. 利用Scissor算法从单细胞数据中挖掘临床表型关联的细胞亚群

本文详细介绍了Scissor算法在单细胞转录组数据分析中的应用,该算法能够精准挖掘与临床表型关联的细胞亚群。通过建立单细胞RNA测序数据与临床预测模型的直接关联,Scissor避免了传统聚类方法的局限性,为疾病机制研究和个性化医疗提供了新工具。文章还涵盖了数据预处理、模型选择、结果验证等实战技巧。

weixin_28736335的博客 494

寒假集训5 H.Hash(哈希函数)

题目链接:https://ac.nowcoder.com/acm/contest/3006/H 本题注意大于原串,且长度为6 #include<iostream> #include<cstdio> using namespace std; int Hash(char str[]) { int res = 0; int len=strlen(str); ...

Buyi的博客 154

别自己写CDC了!聊聊Xilinx AXI4-Stream Clock Converter IP里的寄存器管道模式到底有多省资源

本文探讨了Xilinx AXI4-Stream Clock Converter IP核的寄存器管道模式在FPGA设计中的高效资源利用。通过对比手工CDC实现,详细解析了IP核的精简化同步架构和时序收敛优势,并提供了实战案例和优化策略,帮助工程师快速实现时钟域转换,显著提升设计效率和性能。

weixin_33738555的博客 444

hash表建立,查找,详解

散列表(Hash table,也叫哈希表),是根据关键字(Key value)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。 应用场景 任何一个问题,当选择数据结构的时候一般只有有限的几个选择:数组、链表、二叉树(绝大多数的场景下都是使用二叉

老五的作坊 1万+

数字太大放不下,高精度来补,如何放下超大数字,以及进制转换,高精度真的超好玩。 洛谷1009,1015

想必大家都遇到过数字大小超过int类型范围的情况,是不是碰到int放不下的数字自然就会想到,long int,long long int,甚至unsigned long long int呢。但是有一些出题者就很可恶,偏要出一些连unsigned long long int也放不下的算法题,应对这些问题时,我们是否有相应的应对方法呢?答案是:当然有,高精度就是一种应对这种问题时很好的解决办法。相信你在看完这篇文章后能对高精度有着更深更好的理解。我会循序渐进的来讲,这样大家也更容易听懂。

2303_79329831的博客 1230

YOLOv11 改进 - 特征融合 | 小目标检测救星:DySample动态上采样减少特征丢失

本文介绍了超轻量且高效的动态上采样器DySample与YOLOv11的结合,以解决传统上采样器工作负载大、应用场景受限的问题。DySample从点采样角度构建上采样,绕过动态卷积,使用PyTorch标准内置函数实现,无需定制CUDA包,能大幅减少参数、FLOPs等资源消耗。我们将DySample代码集成进YOLOv11。实验脚本显示,结合DySample的YOLOv11在多个密集预测任务中或表现出色。

魔改工程师的博客 1420

Python——集合基本操作以及哈希函数

Python 中的集合(Set)是一个无序的、不包含重复元素的数据结构。集合主要用于数学上的集合操作,如并集、交集、差集和对称差集等。集合使用大括号{}来表示,但注意空集合不能使用{}表示(这会创建一个空字典),而应该使用set()来创建。

weixin_45720999的博客 1519

R语言中5种正态性检验的方法

统计学中的t检验和方差分析等方法的应用条件是样本都来自正态总体或近似正态总体,只有符合这个条件,才能用这些方法来检验各样本所属的总体参数的差异显著性。文本向大家介绍在R语言中检验正态性的几种方法: 1、Kolmogorov-Smirnov检验 K-S检验检验单一样本是否来自某一特定分布。比如检验一组数据是否为正态分布。它的检验方法是以样本数据的累积频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。K-S检验的原假设和备择假设为: H0:样本所来自的总体分布服从

Mrrunsen的博客 2万+

哈希算法(哈希函数)基本

一、什么是哈希(Hash) 哈希也称“散列”函数或“杂凑”函数。它是一个不可逆的单向映射,将任意长度的输入消息M(或文件F)映射成为一个较短的定长哈希值H(M),也叫散列值(HashValue)、杂凑值或消息摘要。可见,这是一种单向密码体制,只有加密过程,没有解密过程(因此Hash求逆很困难)。 二、哈希的原理和特点 单向性:从哈希值不能反向推导原始数据(计算不可行),即从哈希输出无法倒推输入的原始数值。这是哈希函数安全性的基础。 灵敏性:对输入数据敏感,哪怕只改了一个Bit,得到的哈希值也大不相同

长河落日的博客 3万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

哈希函数的基本理解

哈希函数是输入任意长度映射成固定长度的函数。

2401_87461339的博客 309

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

哈希算法(哈希函数)的基本使用

哈希算法(哈希函数)的基本使用

weixin_72817878的博客 2491

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

哈希表基本概念、哈希函数一般实现思路

哈希表: 哈希表维持一个数组,对每个添加的元素,利用哈希函数生成key对应的index,将key相关数据存放在数组中。以使得每次存取或查找元素时间复杂度为O(1)。 哈希表是“空间换时间”的典型应用。 哈希冲突是指对不同key计算出相同的index值,此时一般解决办法是在该索引位置构造单链表,将相同index值的不同key构造的单链表存放到同一个index的数据域(该数据域存放单链表表头地址)中。 哈希函数: 哈希函数满足以下条件: 1.对于同一个key每次计算必须得出同一个index值。 2.应充分利用k

weixin_45189666的博客 483

哈希函数sha-256流程_哈希函数的非常基本的介绍:SHA-256,MD-5等

哈希函数sha-256流程 这将是哈希函数的基本介绍。 我将假设我的大多数读者都在这里,以了解为什么使用哈希函数以及它们为什么起作用的基本概念。 我的目标是从一般意义上解释它,我将省略证明和实现细节,而将重点放在高级原则上。 为什么要使用哈希函数? 哈希函数在整个Internet上使用,以安全地存储密码,查找重复记录,快速存储和检索数据等等。 例如, Qvault使用哈希将主密码扩展为专...

编程故事的地方 3863

哈希(散列)表、哈希函数基本知识

哈希表 这些查找方法的特点:记录在表中的位置和其关键字间不存在确定关系,查找的过程为给定值依次和各个关键字进行比较,查找的效率取决进行比较的关键字个数。它们的平均查找长度(ASL)都不为0. 若希望ASL=0 方法:预先知道所查关键字在表中的位置。 即:记录在表中位置和其关键字之间的确定关系。 在一般情况下,需在关键字和记录在表中的存储位置之间建立一个函数关系,以f(key)作为关键字为key的记录在表中的位置,通常称这个函数f(key)为哈希函数。 哈希函数是一个映像,即:将关键字的集合映射到某个地址集

ChanCherry的博客 1433

哈希函数的非常基本的介绍:SHA-256,MD-5等

这将是哈希函数的基本介绍。 我将假设我的大多数读者都在这里,以了解为什么使用哈希函数以及它们为什么起作用的基本概念。 我的目标是从一般意义上解释它,我将省略证明和实现细节,而将重点放在高级原则上。 为什么要使用哈希函数? 哈希函数在整个Internet上使用,以安全地存储密码,查找重复记录,快速存储和检索数据等等。 例如, Qvault使用哈希将主密码扩展为专用加密密钥。 此处有更长的用途...

编程故事的地方 1346

哈希函数(Hash Functions - 散列函数)的基本介绍(SHA-2,SHA-256,MD-5,Scrypt,BCrypt等)

Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

RToax 6508

什么是哈希函数

Hash函数译为哈希函数,又称散列函数。是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出的值称为散列值或消息摘要。简单来说就是一种将任意长度的输入消息压缩成某一固定长度的消息摘要的函数。 它具备以下的性质(哈希函数所必须的性质): H可应用于任意大小的数据块。 H产生定长的输出。 对任意给定的x,计算H(x)比较容易,用硬件和软件均可以实现。 出于安全性考虑,对哈希函数的三个安全性假设: 对任意给定的散列值h,找到满足H(x)=h的x在计算上是不可行的,称之为单向性...

zhuzitop的博客 1万+

一文读懂哈希函数

哈希函数 哈希函数(Hash):h=H(Data) ##定义 哈希函数H,将可变大小的数据Data作为输入,产生固定长度的h值。 密码学哈希函数,是一个数学函数。哈希函数本身拥有的特征: 1、输入任意性:函数的输入可以是任意大小的数据; 2、输出固定性:函数的输出是一个固定大小的数据; 3、能够进行有效计算:也就是说在一个合理的时间内,能够对输入数据进行运算得出输出。 对于区块链技术以及加密数字货...

BitTribeLab的博客 9624

哈希函数

有一对 哈希元 a,b 我们可以用这个式子造出哈希函数来 磁力链接,每一位数值范围是0-f 且总共有16位,这就是所谓哈希码, 这就是哈希函数的返回值。 能表示的数值范围是: 哈希函数的性质: 哈希函数的输入域可以是非常大的范围,比如,任意一个字符串,但是输出域是固定的范围(一定位数的bit),假设为S(虽然S可能会很大,但是和输入域没法比),并具有如下性质: 典型的哈希函数都有无限的输入值域。 当给哈希函数传入相同的输入值时,返回值一样。 当给哈希函数传入不同的输入值时,返回值可能一样,也可能不一样

Mr_zhang66的博客 1219
上一篇: HeapSort 堆排序
下一篇: hash函数
Dark_Passion
博客等级 码龄17年 14粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值