c# - 为什么线性探测仅适用于相对主要的步骤?

标签 c# arrays algorithm data-structures

线性探测的步长几乎总是 1,但也可以使用其他步长,只要步长与表大小互质,以便最终访问每个索引。如果不满足此限制,则可能无法访问所有索引... (基本问题是:您需要访问数组中的每个索引,从任意索引开始,然后向前跳过固定数量的索引 [跳过] 到下一个索引,必要时用模数换行到数组的开头。)

我不明白如果步长不是表大小的相对质数,为什么不能访问所有索引,而且我不明白为什么反过来是正确的:如果步长与数组大小互质。

我观察到这个相对主要的性质在我手工计算的几个例子中起作用,但我不明白为什么它在所有情况下都起作用。

简而言之,我的问题是:为什么数组的每个索引都以与数组大小互质的步长访问?有这方面的证据吗?

最佳答案

假设您有 10 个元素,并使用从 0 开始的步长 2。您将访问 0、2、4、6、8,然后循环并重新开始。您会错过所有奇数。

关于c# - 为什么线性探测仅适用于相对主要的步骤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29287651/

相关文章:

c# - 使用内置 SQL 函数编译的 Linq 查询

c# - 将多头列表转换为字符串数组

arrays - 为什么结构数组比较有不同的结果

android - 我如何在android中的用户定义方法中使用选定的菜单项值

c++ - Big-O 表示法的函数时间复杂度?

算法 - 树中所有节点的最大距离

c# - 如何在 VS 中运行和测试 Windows 服务

c# - 使用后台线程时高效显示文件状态

c# - WPF - 具有可扩展控制切碎元素的面板

c# - 如何在 32 个二元期权之间迭代?