字符串的哈希函数

2024-01-11

我正在用 C 语言研究哈希表,并且正在测试字符串的哈希函数。

我尝试的第一个功能是添加 ascii 代码并使用模 (% 100)但我的第一次数据测试结果很差:130 个单词有 40 次碰撞。

最终输入数据将包含 8000 个单词(它是存储在文件中的字典)。哈希表声明为int table[10000]并包含该单词在 .txt 文件中的位置。

  • 哈希字符串的最佳算法是什么?
  • 以及如何确定哈希表的大小?

我取得了不错的成绩djb2 http://www.cse.yorku.ca/~oz/hash.html作者:丹·伯恩斯坦。

unsigned long
hash(unsigned char *str)
{
    unsigned long hash = 5381;
    int c;

    while (c = *str++)
        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */

    return hash;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字符串的哈希函数 的相关文章

  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • 为什么pow函数比简单运算慢?

    从我的一个朋友那里 我听说 pow 函数比简单地将底数乘以它的指数的等价函数要慢 例如 据他介绍 include
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • 函数参数的默认参数是否被视为该参数的初始值设定项?

    假设我有这样的函数声明 static const int R 0 static const int I 0 void f const int r R void g int i I 根据 dcl fct default 1 如果在参数声明中指
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • 从客户端访问 DomainService 中的自定义对象

    我正在使用域服务从 Silverlight 客户端的数据库中获取数据 在DomainService1 cs中 我添加了以下内容 EnableClientAccess public class Product public int produ
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • String.Empty 与 "" [重复]

    这个问题在这里已经有答案了 可能的重复 String Empty 和 有什么区别 https stackoverflow com questions 151472 what is the difference between string
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • 如何在 Angular2 组件中操作 scss 变量

    有没有办法可以更改 Angular2 组件中声明的 scss 变量 我想根据用户选择动态添加主题 因此需要修改 scss 变量 我读到了有关将所有 scss 变量保存在单独的 scss 文件中并将其导入其他 scss 文件中的内容 但是我可
  • 我们可以在 Flutter 中显示一些动态文本以及 Google 地图上的标记吗?

    在 Flutter 中是否有可能实现像这样的图像 我使用 google maps flutter 插件在屏幕上显示 GoogleMap 并使用 BitmapDescriptor 更改地图标记的图标 现在我只是在寻找某种方法来显示标记下方的文
  • 一个 UITableView 中有多个 UITableViewCell 类?

    我正在组合一个 TableView 并且需要在同一个表中使用多个单元格类 例如 我将如何在我的cellForRowAtIndexPath method UITableViewCell tableView UITableView tableV
  • 查询构建器中不存在 Get onlyTrashed()

    我正在尝试从表消息中获取废弃的行 public function trash return this gt onlyTrashed gt where user id this gt u gt orWhere receiver this gt
  • 在 iOS 模拟器中启动 Flutter 应用程序时出错

    我在 iOS 模拟器上启动 Flutter 应用程序时遇到问题 从下面的错误输出来看 这个问题似乎与本地主机连接等有关 但我无法找到如何修复它 我正在运行 MacOS Catalina 版本 10 15 6 19G73 iOS模拟器版本11
  • 编写调用Fortran库的R包

    我正在尝试编写一个调用 Fortran 子例程的 R 包 我正在使用 Rstudio 包模板自动创建一堆文件和目录 In R 我有一个文件 Fpi R Fpi lt function DARTS ROUNDS if is loaded Fp
  • 在 Android 中启动新的 Activity 并完成当前的 Activity? [复制]

    这个问题在这里已经有答案了 目前我正在开始一个新的Activity并打电话finish在当前的一个上 是否有任何标志可以传递给Intent这使得完成电流Activity无需致电finish手动从代码 您可以使用finish 方法或者您可以使
  • 为什么通过引用捕获变量的 lambda 不能转换为函数指针?

    如果我有一个通过引用捕获所有自动变量的 lambda 为什么不能转换为函数指针呢 常规函数可以像通过引用捕获所有内容的 lambda 一样修改变量 那么为什么不一样呢 换句话说 我想 lambda 和 a 之间的功能区别是什么 捕获列表和常
  • 使用 Laravel 进行 Flutter FCM

    我正在使用 Laravel 作为我的应用程序后端 并希望按主题向我的 flutter 应用程序发送推送通知 现在我在我的 flutter 应用程序中实现了 firebase 消息传递 作为 registerOnFirebase fireba
  • 立即运行 Jenkins 作业

    我有一个非常轻量级的作业 应该在触发时立即执行 而不是等待一个小时才能完成当前作业 据我了解 一个蝇量级任务就是我想要的 它将创建一个临时执行器 专门用于该任务 我怎样才能让一个工作作为蝇量级运行 我最近也遇到了同样的问题 我的公司有很多
  • 我应该如何折叠 Python 中的元素? [复制]

    这个问题在这里已经有答案了 例如 l a 1 b 2 a 2 collapsed l dict a 1 2 b 2 如何最好地从l to collapsed l 从某种意义上说 我想要某种方式来概括我正在崩溃的 领域 以及哪个领域 我认为这
  • eslint 禁用扩展覆盖

    如果你有一个覆盖 你想 降级 js解析器 你如何关闭extends来自父母 parserOptions很容易被覆盖 因为它是基于密钥的 extends因为空数组不执行任何操作 因为它尝试将空列表附加到原始数组 如果您将其设置为null 您会
  • Zend Framework notEmpty 验证器 setRequired

    我看过其他的问题 https stackoverflow com questions 3871460 zend form setrequiredtrue or addvalidatornotempty 谷歌搜索这个 我的问题是 当我提交带有
  • std::variant 在 MSVC 和 gcc 中的行为不同

    Update 这是一个 C 标准缺陷 已在 C 20 P0608R3 中修复 另外 VS 2019 16 10 修复了这个错误 std c 20 MSVC 19 28 拒绝以下代码 但 gcc 10 2 接受它并输出true false i
  • 如何以编程方式为 UINavigationController 子类化 UINavigationBar?

    我正在使用自定义的drawRect函数来绘制UINavigationBar在我的 iOS4 应用程序中 它不使用图像 仅使用 CoreGraphics 因为你不能在中实现drawRectUINavigationBariOS5 中的类别 Ap
  • JavaScript 唯一浏览器 ID

    有没有办法在javascript中为浏览器创建一个唯一的ID 我说的不是每次生成时都是随机的 ID 而是生成该 ID 的浏览器所特有的 ID 而且还考虑了运行该 ID 的计算机 Example Windows 7 Chrome 可能会生成
  • Ionic Zip 仅提取特定文件夹

    我有一个案例 我需要使用 C Ionic zip 库提取 Zip 文件 Zip 文件包含多个文件夹 我想提取特定文件夹并将其复制到特定目的地 例如名为 abc zip 的 Zip 文件和目录结构如下 父目录 gt 子目录1 gt 文件a 文
  • 从文档大纲(书签)中获取页码

    我正在使用 itext7 库来操作一些现有的 PDF 由于某种原因 我无法从大纲中获取页码 我想我应该以某种方式从Pdf目的地 http itextsupport com apidocs itext7 latest com itextpdf
  • 每天都会对 Java 8 Stream API 中的实体进行惰性排序吗?

    我有一个很大的 Java 8 Stream Stream
  • 字符串的哈希函数

    我正在用 C 语言研究哈希表 并且正在测试字符串的哈希函数 我尝试的第一个功能是添加 ascii 代码并使用模 100 但我的第一次数据测试结果很差 130 个单词有 40 次碰撞 最终输入数据将包含 8000 个单词 它是存储在文件中的字