随机化算法(二)

本文详细介绍了随机化快速排序算法的原理与实现过程,并通过数学归纳法推导出该算法的期望比较次数为T(n)=O(nlnn),与确定型快速排序保持一致。

随机化算法

1. 随机化快排

将数组元素划分为 3 个子数组:

  • A:包含比枢轴元素小的元素;
  • B:包含与枢轴元素相等的元素;
  • C:包含比枢轴元素大的元素;

定理1 设数组含 n 个不同元素,随机快速排序算法的期望比较次数:

T(n)2nlnn

也即 T(n)=O(nlnn)(与确定型快排相一致)

首先来考验算法执行的流程,1. 选定枢轴(pivot)元素,2. 其余 n-1 个元素都要与其比较,以决定在子数组 A\B\C 的归属;

T(n)=n1+1ni=0n1(T(i)+T(ni1))

等式的左端是函数,等式的右端仍然出现该函数,显然是递归调用。

又易知,i=0n1(T(i)+T(ni1))=2iT(i)

T(n)=n1+2ni=0n1T(i)

此时利用数学归纳法:

T(n)=n1+2ni=0n1T(i)n1+2ni2ilni使n1+2nn12xlnxdxn1+2n(n2lnnn22+12)2nlnn

转载于:https://www.cnblogs.com/mtcnn/p/9422898.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值