g-sorted-ness不受后来的h-sorting的影响:证明是正确的吗?

时间:2016-05-01 06:28:48

标签: arrays algorithm sorting proof

假设:数组A经过g分类。即对于所有整数x和特定整数g, A [x]< A [x + g]< A [x + 2g] ......

现在,如果我们在将其复制到数组B之后进行排序,以实现条件:对于另一个特定的整数h, B [x]< B [x + h]< B [x + 2h] ......

假设是在对h进行h排序之后,对于任意整数h和g,数组仍然保持g-排序。

证明:如果与假设相反,h-排序将影响g-sorted-ness,这将归因于A [x1]> A [x1 + h],对于g排序数组A中的某些x1,我们在x和x + h交换了元素 - 这次交换最终破坏了g-sortedness

现在,我们知道对于所有x,A [x-g]< A [x]< A [x + g]< A [x + 2g],因为它已经被g-sorted。

因此,A [x + h-g]< A [x + h]< A [X + H + G]

对于特定的x = x1,我们有A [x1]> A [x1 + h]所以我们需要在x1和x1 + h交换元素。在交换之前,数组的条件是:对于所有x

{A [x-g]; A [x + h-g]}< A [x + h]< A [x]< {A [x + g]; A [X + H-G]}

{}表示我不知道{}中元素的顺序,但{}中的每个元素分别满足排序条件。

对于特定的x = x1,即使我们在x1 + h和x1交换元素,交换前的条件是

{A [x1-g]; A [x1 + h-g]}< A [x1 + h]< A [x1] < {A [x1 + g]; A [X1 + H-G]}

交换后,它是

黄金:{B [x1-g]; B [x1 + h-g]}< B [x1]< B [x1 + h] < {B [x1 + g]; B [X1 + H-G]}

这可能会以两种方式破坏g-sorted-ness:
1. B [x1]> B [X1-G]
2. B [x1 + g]> B [x1]

但是上述交换条件标记为GOLD后,这两种破坏条件都不正确。因此,在对g排序的数组进行h排序之后,g-sorted-ness不会被破坏。

问题:这是一个数学上有效的证明吗?请评论。

1 个答案:

答案 0 :(得分:0)

证据不好,因为假设是假的。考虑以下h排序算法:

  1. 将g-sorted数组的内容转储到地板上。
  2. 将元素洗净一会儿,然后去吃午饭。
  3. 回来并对元素进行排序。
  4. 这导致一系列元素被h分类但不再是g-sorted。好吧,我们真的应该表明,有些方法可以对上述参数进行分类处理。这个例子很简单。设g = 1且h = 2.取数组

    A = 1 2 3 4
    

    A经过g分类和h分类。但是如果h-sorted而不是g-sorted那么元素的以下排列:

    B = 1 3 2 4
    

    因此,不能保证h-sorting导致g-sorted列表。

    现在有一些名为 stable 排序算法的东西;根据定义,如果h分类算法保留了您试图显示的属性,则它将是g-stable。但是,您需要证明特定h排序算法的g-stable属性,它将适用于该算法,而不是h-sorting。