码迷,mamicode.com
首页 > 编程语言 > 详细

算法分析基础——差消法求解高阶递推方程

时间:2019-01-22 01:23:56      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:http   时间复杂度   相对   排序   递推   strong   n+1   情况下   bubuko   

差消法,简单来讲,就是对高阶的递推方程作差,转化为一阶方程后再运用迭代法。有了迭代法的基础后,差消法理解起来就很容易了。这里举出对快速排序的分析加以说明。

对于快排,我们知道选择不同的轴值,会导致不同的算法效率。最坏的情况下,选取的轴值恰好是待排序数组的最值,那么排序的效率就会退化为线性时间。现在我们来估算平均情况下快速排序的时间复杂度。

设T(n)为待排序数组长度为n时,快速排序算法需要的比较次数。那么T(1) = 0,而T(n)的递推方程相对于轴值的选取有如下n种情况:

T(n) = T(0) + T(n - 1) + n - 1

T(n) = T(1) + T(n - 2) + n - 1

...

T(n) = T (n - 1) + T(0) + n - 1

假定选取的轴值在排序后的数组中的每个位置出现的概率相等。那么平均情况下,就可以计算得到T(n)的递推表达式为

技术分享图片

这是n阶的递推方程,不适合直接采用迭代法。接下来即运用差消法来求解:将O(n)用cn来表达,得到

技术分享图片

技术分享图片

两式相减得

技术分享图片

再同除以n(n+1),得到熟悉的一阶递推方程

技术分享图片

于是我们得出T(n) = Θ(nlogn)。

 

算法分析基础——差消法求解高阶递推方程

标签:http   时间复杂度   相对   排序   递推   strong   n+1   情况下   bubuko   

原文地址:https://www.cnblogs.com/Jeffrey-Y/p/10301648.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!