23、开放寻址哈希法:二次探测与双重哈希解析

开放寻址哈希法:二次探测与双重哈希解析

1. 线性探测的问题

在哈希表的操作中,简单的线性探测技术存在一些问题。当使用线性探测进行开放寻址时,会形成数据簇。一旦簇形成,它往往会不断增大。因为哈希到簇范围内任何值的项都会依次插入到簇的末尾,导致簇越来越大,且增长速度越来越快。

例如,在商场中有人晕倒时,最初到达的人是因为看到有人倒下,而后来的人则是因为好奇其他人在看什么而聚集过来,人群越大,吸引的人就越多。

表中项的数量与表大小的比值称为负载因子,计算公式为 loadFactor = nItems / arraySize 。一般来说,负载因子越大,数据簇就越多,但即使负载因子不高,也可能形成簇。哈希表的某些部分可能是大的数据簇,而其他部分则可能只有稀疏的数据。数据簇会降低哈希表的性能。

为了避免数据簇的形成,有两种方法:二次探测和双重哈希。接下来,我们将简要介绍二次探测,并详细探讨双重哈希。

2. 二次探测

二次探测的目的是避免数据簇的形成。其思路是探测与初始哈希位置间隔更远的单元格,而不是相邻的单元格。

2.1 探测步长

在线性探测中,如果初始哈希索引是 x ,后续的探测位置依次是 x + 1 x + 2 x + 3 等。而在二次探测中,探测位置依次是 x + 1 x + 4 x + 9 x + 16 <

代码转载自:https://pan.quark.cn/s/8ce4326d996e 对于在 CentOS 7 系统中修改网卡配置文件后无法使设置生效的情况,经过实践验证,可以通过使用 nmcli 命令来进行调整。完成修改之后,需要重新启动虚拟机以使更改生效,这样操作流程即告完成。如果设置仍然无法生效,则表明虚拟机在启动过程中所获取的 IP 地址配置并非针对 eth0,此时可以对其它网卡的配置文件进行修改或将其移除。在 CentOS 7 系统中,网络配置的管理机制早期版本存在差异,主要体现为采用了 Network Manager 服务来负责网络接口的管理。在某些情形下,尽管修改了 `/etc/sysconfig/network-scripts` 目录下的 `ifcfg-eth0` 文件,但网络配置却未能即时生效。此类问题的发生通常源于 CentOS 7 采用了不同于以往的配置读取方法。接下来将具体阐述如何借助 nmcli 命令来处理这一挑战。 以 root 用户身份登录系统并打开终端界面。nmcli 是 Network Manager 提供的命令行界面工具,它支持在命令行环境下执行网络连接的建立、编辑、查询及管理任务。针对修改 eth0 网卡配置的需求,可以遵循以下步骤进行操作: 1. 导航至 `/etc/sysconfig/network-scripts` 目录: ``` cd /etc/sysconfig/network-scripts ``` 2. 检查该目录内是否存在 `ifcfg-eth0.bak` 文件,该备份文件可能是先前调整配置时遗留下来的,若存在可能造成冲突。若发现该文件,可以选择将其删除: ``` [root@localhost netw...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值