3-增量序列{3,2,1}的希尔排序时间复杂度分析

在本文中我们进行(3,2,1)-Shellsort在n元素随机序列的算法分析
1.pre
h = (ht,ht-1,…,h2,h1) : h1=1的正整数向量
S1(h;n): 第j趟排序进行的平均元素交换次数
I(L): L中含有的逆序数
L(h,j): 长度为(n+h-1+j)/h的L的子序列(L[ j ],L[ j+h ],L[ j+2h ],…)
2.conclusion
for h = (3,2,1):
(1)S1(h;n) = n2/12 +O(n);
(2)S2(h;n) = (π/192)1/2 * n3/2 + O(n);
(3)S3(h;n) = n/4 + O(n2/3);
3.prove
(1) pass 1
在这里插入图片描述
如图,我们可以将L分成多行,每行代表一个子序列L(3,j)(0 <= j < 3)
引用插入排序的结论,对一个随机序列,逆序数为n(n-1)/4
可得出 在这里插入图片描述
ni = [(n+2-i)/3] (取下界)
容易算出 S1(h;n) = n2/12 +O(n);
(2) pass 2
假设 n = 3m , m>0,经过pass1我们得到了一个3-order list
pass 2对L(2,0) L(2,1) 进行插入排序
S2(j) 表示L(2,j) 中的逆序数,有
S2(h;n)=S2(0) (n) +S2(1) (n)
现在考虑一个L’ = {a0,b0,a1,b1,a2,b2……}
定义四个子序列
Leven,even = {a0,b0,a2,b2,a4,b4……}
Leven,odd = {a0,b1,a2,b3,a4,b5……}
Lodd,even = {b0,a1,b2,a3,b4,a5,……}
Lodd,odd = {a1,b1,a3,b3,a5,b5,……}
For each α,β ∈ {even, odd}, let Xα,β denote the random variable, defined on the set of L’, corresponding to the number of inversions in L, and let Bα,β (2m) = E(Xα,β ) for a random 2-ordered L’. Clearly,
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
具体证明不加描述,想了解者可阅读文末参考文献
(2) pass 3
O(n2/3) is an overestimate of the error term for S,.

An Analysis of (h, k, 1)-Shellsort*
ANDREW CHI-CHIH YAO
Conputer Science Deportment, Stanford CJniversi@, Stanford California 94305

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值