Shellsort - 如果一个数组是g-sorted然后进行h-sorted,那么该数组仍然是g-sorted

时间:2014-07-05 20:16:28

标签: algorithm sorting

以下是来自普林斯顿的coursera算法课程的练习。

如果一个数组既有3个排序又有5个排序,那么它是否也是6,7,8,9和10排序的? 我知道任何序列如果g-sorted然后h-sorted,它仍然是g-sorted。但这是如何解释这个问题的呢?如果一个数组是3排序和5排序的,它与6排序或7排序等有什么关系? 提前谢谢!

3 个答案:

答案 0 :(得分:0)

好吧,关于6,9和10排序,这些只是基本排序运行中的备用条目(例如,6排序是3排序中的每隔一个条目)。所以你可以说对于一个h排序的数组,该数组也是kh排序的,其中k是一个大于0的正整数.8-排序有点难以理解,但它足以说数组是8 -sorted因为8是3和5的总和。出于类似的原因,我们可以说数组不是7排序的,因为你不能从5和3构造7。

答案 1 :(得分:0)

数组是3排序和5排序的。

任何多个 k 的3或5(对于ex-k = 6,9,10,15等)我们 k排序肯定。

除了 h 3 + 5或其任何倍数之和(例如h = 8(3 + 5),11(5 + 6),13(10 + 3) ),16(10 + 6))将 h排序

任何不在上述类别中的序列 k 都不能构建,因此它们不是 k-sort (ex k = 7)。

答案 2 :(得分:0)

它是6,8,9,10排序,但不是7排序。

a [i]< = a [i + g]< = a [i + g + k] => a [i]< = a [i + g + k],因此g-排序和k-排序给(g + k) - 排序(g和k肯定可以相等)。

因此,3排序和5排序给我们6,8,9,10排序。 (6 = 3 + 3,8 = 3 + 5,9 = 3 + 3 + 3,10 = 5 + 5) 但是我们没有7个排序,例如:

[4,1,0,5,2,7,6,3]是3分类的([4,5,6],[1,2,3],[0,7])和5-排序([4,7],[1,6],[0,3]),但不是7排序([4,3])。