用于处理冲突的链式地址法2025年3月17日 | 阅读 3 分钟 描述什么是冲突。由于哈希函数会为一个大整数或字符串的键返回一个较小的数字,两个键可能会产生相同的值。当新添加的键映射到哈希表中一个已经被占用的槽位时,必须使用冲突处理机制来处理这种情况。 对于大表,冲突的频率如何?即使我们有一个很大的表来存放键,冲突仍然非常普遍。“生日悖论”是一个重要的发现。仅需23人,就有50%的概率会有两个人共享同一个生日。 处理冲突主要有两种处理冲突的方法
本文仅介绍分离链接法。下一篇文章将介绍开放地址法。 链式寻址通过分离链接法,数组被实现为一个链,即一个链表。分离链接法是处理冲突最流行和最常用的方法之一。 该方法使用链表数据结构实现。因此,当多个元素被哈希到同一个槽位索引时,这些元素会被添加到一个链中,这个链是一个单向链表。在这里,所有哈希到同一槽位索引的条目都会形成一个链表。现在,我们可以用一个键 K,通过简单的线性遍历来搜索这个链表。如果任何条目的内在键等于 K,那么我们就找到了我们的条目。如果我们已经搜索到链表的末尾仍然找不到它,那么该条目就不存在。因此,在分离链接法中,我们得出结论:如果两个不同的条目具有相同的哈希值,我们将它们一个接一个地存储在同一个链表中。 让我们使用“键 mod 7”作为我们简单的哈希函数,键值如下:50, 700, 76, 85, 92, 73, 101。 ![]() 优点
缺点
链接法的性能在假设每个键被哈希到任何表槽位的可能性相等(简单均匀哈希)的前提下,可以评估哈希的性能。 用于存储链的数据结构
总结
|
在计算机科学和图论中,最小生成树(MST)问题至关重要,并在网络设计、路由和聚类等领域有应用。在为解决 MST 问题而开发的众多算法中,Boruvka 算法因其简单性和效率而备受瞩目。本文深入探讨了……
阅读9分钟
当然!要解决“找出队列中最后拿到票的人”的问题,需要理解队列数据结构的工作原理,然后实现一个策略来找出谁最后拿到了票。理解问题:在队列中,人们排队,然后...
阅读 4 分钟
本文讨论了一个对未排序数组执行搜索、插入和删除操作的代码。搜索操作:对于未排序数组,可以通过从第一个元素到最后一个元素的线性遍历来完成搜索操作。搜索操作的编程执行:C 编程语言:#include <stdio.h> int...
阅读 6 分钟
在二叉树中检查镜像图像是一个有趣的问题,它出现在各种应用中,例如计算机图形学、数据分析和算法设计。这涉及到我们需要比较两棵二叉树的结构和值以进行验证或...
5 分钟阅读
在上一篇文章中,我们通过一个简单的例子描述了线段树。本文解释了线段树的另一个应用,即范围最小值查询问题。手头的问题如下:我们有一个名为 arr[0, 1, n] 的数组。其中...
5 分钟阅读
堆栈是一种抽象数据类型 (ADT),用于线性存储数据。堆栈的唯一可以添加或删除数据的端点是堆栈的顶部。抽象数据类型对象的行为可以通过一组值来描述……
5 分钟阅读
?堆栈是编程和计算机科学中广泛使用的基本数据结构。元素根据后进先出 (LIFO) 原则添加到堆栈顶部并从堆栈顶部删除。尽管优先级队列或堆可以高效地实现堆栈,但它们……
7 分钟阅读
我们给出一个包含 n 个元素的数组,并且我们必须在该数组中找到一个元素,该元素能将数组分成两个部分,使得两个子数组的和相等。基本上,左侧的和与...
阅读 6 分钟
一种特殊的基于树的数据结构,它符合堆属性,使其非常适合构建优先队列。堆是编程和计算机科学应用中的堆包括排序算法和优先队列。堆主要有两种:最大堆:最大堆是一组节点,其中...
阅读 4 分钟
稀疏集是数学和计算机科学中的基本概念,对许多不同的算法和数据结构至关重要。稀疏集通过仅存储必需的元素来提高内存利用率,这与为每个可用组成部分分配内存的标准数据结构不同。这个概念...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India