您的位置:首页 > 其它

Hibbard增量的希尔排序思考——如何证明其减枝条件

2017-11-21 21:23 302 查看
在要排序的M个元素的数组a中

对于Hibbard增量来说,其增量序列为{1,3,7……hn−1,hn},并且hi+1=2hi+1。

当希尔排序运行到hi 时对子数组{……a[λ−2hi],a[λ−hi],a[λ]}进行插入排序

有一个减枝条件:

对于 X=(hi+1−1)(hi+2−1)=8h2i+4hi

恒有a[λ−X−khi]<a[λ](X+khi<λ<M,k∈N)。

(也就是说对于hi,a[1]到a[λ−X]被减枝了)。

下面来证明这个结论

性质一 X必定能表示成X=αhi+1+βhi+2 的形式。其中 α,β∈N。

我们注意到 {X=8h2i+4hiαhi+1+βhi+2=(2α+4β)hi+α+3β

于是有了两种想法

想法(1)

{2α+4β=8hi+4α+3β=0

解得{α=12hi+6β=−4hi−2

由于α,β≥0,明显β 不成立。

或者想法(2)

{2α+4β=8hiα+3β=4hi

解得{α=4hiβ=0

α,β 为非负整数,得证

由此可得推论一 a[λ−X]<a[λ]

证明

∵a[λ−hi+1]<a[λ],a[λ−hi+2]<a[λ] (希尔排序的性质)

∴a[λ−αhi+1−βhi+2]<a[λ]

∴a[λ−X]<a[λ]

性质二 a[λ−X−hi]<a[λ−X](希尔排序的性质)

综合推论一和性质二,即可得证。

但是X是不是最大的减枝呢?有没有更大的减枝?

先观察X,其实X=2hi∗2hi+1

于是可以设出Y=hi∗hi+1=2h2i+hi

可以证明 Y 同样是一个减枝条件。而Y 确实看起来比X 优秀。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息