algorithm - shell排序的最快间隙序列?

标签 algorithm performance sorting shellsort

根据 Marcin Ciura 的 Optimal (best known) sequence of increments for shell sort algorithm , shellsort 的最佳顺序是 1, 4, 10, 23, 57, 132, 301, 701..., 但是我怎样才能生成这样的序列呢? 在 Marcin Ciura 的论文中,他说:

Both Knuth’s and Hibbard’s sequences are relatively bad, because they are defined by simple linear recurrences.

但我找到的大多数算法书籍都倾向于使用 Knuth 序列:k = 3k + 1,因为它很容易生成。生成 shellsort 序列的方法是什么?

最佳答案

Ciura 的论文根据经验生成序列——也就是说,他尝试了一堆组合,这是效果最好的一个。生成最佳 shellsort 序列已被证明是棘手的,并且该问题迄今为止难以分析。

最著名的增量是 Sedgewick 的,您可以阅读 here (见第 7 页)。

关于algorithm - shell排序的最快间隙序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539545/

相关文章:

结合唯一键的 MySQL 性能

sql-server - 为什么使用声明变量作为参数的 UDF 调用比使用硬编码参数调用快得多

MySQL LIKE,额外通配符对性能的影响

android - 如何在 Android 中从 JSON 对象对 JSON 数组进行排序?

c - 仅使用递归编写 C 函数

algorithm - 理解树递归的直观方法——编写代码检查二叉树是否平衡

java - 寻找一种从 2 个列表中查找排序顺序的有效方法

python - 如何将点连接成组

c++ - 显示排序模拟

java - 第一个列表已排序,另一个未排序,这是合并两个列表的更好方法