- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信1304班:鲁信金、易浩宇、刘子雄 合并排序的时间复杂度计算 01 02 03 04 目录 CONTENT 合并排序 时间复杂度 如何学习 方法及计算 合并排序 第三章标题 第二章标题 第四章标题 合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。合并排序也叫归并排序。 第三章标题 第四章标题 时间复杂度 第一章标题 计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况。 第四章标题 第一章标题 方法及计算 第二章标题 用 T(n) 表示输入大小为 n 的数组时合并排序最坏的运行时间。假设 n 是偶数。排序需要 O(n) 时间把输入分成两个大小为 n/2 的子数组,然后对每个子数组排序需要 T(n/2)。最后需要 O(n) 把结果合并起来。所以我们得到这个关系式: T(n) = 2T(n/2) + O(n), 或 T(n) = 2T(n/2) + cn (当 n 2时,T(2) = c) 从这个关系式中并不能明显看出 T(n) 是什么类型的函数,所以我们需要想办法解出这个关系式,也就是递归求解。 第四章标题 第一章标题 方法及计算 第二章标题 方法求解有两种基本的方法: 1、最自然的方法是展开关系式,通过分析最初几级的运行时间来得到一个通式,或者说是规律,然后把每一级的运行时间相加,即求得总的运行时间。 2、第二种方法是先猜出一个觉得合理的解,然后代入原来的关系式中验证。 第四章标题 第一章标题 方法及计算 第二章标题 展开递归式基本的步骤: 1、分析最初的几级:在第0级时,我们只有一个大小为 n 的数组,这里需要最多 cn 时间。在第1级,我们有两个子数组,每个大小为 n/2,分别需cn/2 时间,所以总的时间是 2*(cn/2) = cn。在第2级,我们有四个子数组,每个大小为 n/4,分别需要 cn/4 时间,所以总的时间还是 4*(cn/4) = cn。 2、得出规律:可以看到在第 j 级时,我们有2j个子数组,每个大小为 cn/2j,分别需要cn/2j时间,所以这级总的运行时间为2j(cn/2j) = cn. 3、求和:我们已经求得每一级需要的运行时间。对于一个大小为 n 的数组,递归最多有logn层,所以总的运行时间为 O(nlogn)。 第四章标题 第一章标题 方法及计算 第二章标题 更通用的递归式: 上面的分析都是基于每个问题被分成2个子问题。如果现在我们把每个问题分成 q 个大小为 n/2 的子问题,我们得到一个更通用的递归式 T(n) = qT(n/2) + cn 当 n2时,T(2) = c 当 q=2时就是我们上面分析的情况。接下来我们分析 q2 和 q=1的情况。 第四章标题 第一章标题 方法及计算 第二章标题 q2的情况: 还是采用基本的步骤展开: ?分析:这里我们假设 q=3。在第0级时,只有一个大小为n的问题,需要cn时间。在第1级,我们有q个子问题,每个大小n/2,需要cn/2时间,所以总的时间为(q/2)cn。在第2级,有q2个字问题,每个大小n/4,需要cn/4时间,总的时间为(q2/4)cn。 ?得出规律:在任意一级j,有qj个字问题,每个大小为n/2j,所以总的时间为qj(cn/2j) = (q/2)jcn。 求和:对于大小为n的问题,总的层数还是不变,所以 第四章标题 第一章标题 第二章标题 令 r = q/2,则上式变成了 方法及计算 这里用到了几何级数的一个公式。如果我们有 等式两边同时乘以r得到 两式相减得到 第四章标题 第一章标题 第二章标题 所以 方法及计算 回到T(n)上来。因为r=q/2是常数,所以 现在问题变成了求 。这里用上对数的换底公式, 当a1, b1时 。 所以 最终得到 从结果看得出,运行时间是大于线性的因为 。q=4时运行时间是O(n2)。 第四章标题 第一章标题 方法及计算 第二章标题 q=1的情况: ?分析:第0级时,只有一个大小为n的问题,需要cn时间。第1级时,问题大小为n
文档评论(0)