博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序的期望复杂度O(nlogn)证明。
阅读量:4659 次
发布时间:2019-06-09

本文共 1556 字,大约阅读时间需要 5 分钟。

快速排序的最优时间复杂度是 \(O(nlogn)\),最差时间复杂度是 \(O(n^2)\),期望时间复杂度是 \(O(nlogn)\)

这里我们证明一下快排的期望时间复杂度。

\(T(n)\) 为对长度为 \(n\) 的序列进行快速排序所需要的期望时间。我们有:

\[T(0) = 0\]

以及: \[T(n) = n + \frac{1}{n}\sum_{i=0}^{n-1}(T(i) + T(n - i - 1))\]

我们可以通过放缩来获得对 \(T(n)\) 上界的一个估计。

\[T(n) = n + \frac{1}{n}\sum_{i=0}^{n-1}(T(i) + T(n - i - 1))\]

\[ = n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{n-1}(T(i) + T(n - i - 1))\]
\[ = n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{\frac{3n}{4}}(T(i) + T(n - i - 1)) + \frac{2}{n}\sum_{i=\frac{3n}{4}}^{n-1}(T(i) + T(n - i - 1)) \]

因为 \(T(n) >= n\) , 所以对于 \(\frac{n}{2} <= i <= j\),我们显然有:

\[T(i) + T(n - i) <= T(j) + T(n - j)\]

所以:

\[T(n) <= n + \frac{2}{n}\sum_{i=\frac{2}{n}}^{\frac{3n}{4}}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{2}{n}\sum_{i=\frac{3n}{4}}^{n-1}(T(n - 1) + T(0))\]

\[<= n + \frac{1}{2}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{1}{2}T(n-1) \]

我们要证明 \(T(n) = O(nlogn)\) , 这需要证明存在常数 \(c\) 满足 \(T(n) <= cnlogn\)

我们考虑用数学归纳法证明。\(n = 0\)时定理显然成立。现在假设对于 \(m <= n\) 定理皆成立。那么:

\[T(n) <= n + \frac{1}{2}(T(\frac{3n}{4}) + T(\frac{n}{4})) + \frac{1}{2}T(n-1) \]

\[<= n +\frac{1}{2}(c(\frac{3n}{4})log(\frac{3n}{4}) + c(\frac{n}{4})log(\frac{n}{4})) + \frac{1}{2}c(n-1)log(n-1)\]

\[<= n +c(\frac{3n}{8}log(n) - \frac{3n}{8}log(\frac{4}{3}) + \frac{n}{8}log(n) - \frac{n}{8}log(4) + \frac{n}{2}log(n))\]

\[= cnlogn + n(1 - \frac{3c}{8}log(\frac{4}{3}) - \frac{c}{4})\]

\(1 - \frac{3c}{8}log(\frac{4}{3}) - \frac{c}{4} <= 0\) 时,也即约 \(c >= \frac{5}{2}\),我们有:

\[T(n) <= cnlogn\].

归纳成立,\(T(n) = O(nlogn)\).

转载于:https://www.cnblogs.com/LzyRapx/p/9565827.html

你可能感兴趣的文章
浮点数乘积的取整intval,以及高精度函数bcmath的使用
查看>>
C.xml
查看>>
layui + thymeleaf 动态拼接地址
查看>>
Yahoo14条前端优化规则(Yslow)
查看>>
移动架构-手写ButterKnife框架
查看>>
UVAlive 6560 - The Urge to Merge(状压dp)
查看>>
webpack中如何使用iconfont字体图标
查看>>
java虚拟机类加载机制
查看>>
IOS Xcode -> instruments -> Leaks
查看>>
工作中常用的Linux命令:crontab命令,定时任务执行命令
查看>>
【转载】C#中List集合使用Remove方法移除指定的对象
查看>>
Android Studio 第一次配置及其使用
查看>>
Little Girl and Maximum Sum CodeForces - 276C
查看>>
expect 交互 之shell执行命令操作
查看>>
java1.8新特性(三 关于 ::的用法)
查看>>
《python机器学习—预测分析核心算法》:理解数据
查看>>
xps文档打印后winform界面文字丢失
查看>>
不同的领导,不同的关注点
查看>>
虚拟机报错:无法打开内核设备"\\.\Global\vmx86":
查看>>
Chapter 3 Phenomenon——8
查看>>