- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
快排和归并的比较
快排和归并的比较
快排和归并的比较
快快排排和和归归并并的的比比较较
首先都是分治法的应用:
• 1 分解(divide):将原问题分解成一系列子问题;
• ² 解决(conquer):递归地解各子问题。若子问题
足够小,则直接求解;
• 3 合并:将子问题的结果合并成原问题的解。
快速排序 自顶向下 先受罪后享福
• --
• 1 分解:数组A[p..r]被划分为两个(可能空)子数组
• 2 解决:通过递归调用快速排序,对子数组A[p..q-1]和
A[q+1..r]排序;
• 3 合并:因为两个子数组是就地排序的,将它们的合并
并不需要操作,整个A[p..r]已排序。
归并排序 自底向上 先享福后受罪
•
• 归并排序算法完全依照分治模式,直观的操作如下:
分解:将 个元素分成各含 个元素的子序列;
• 1 n n/2
• 2 解决:用归并排序法对两个子序列递归地排序;
• 3 合并:合并两个已排序的子序列以得到排序结果。
• 快速排序:
• 其求解动作在分解子问题开始前进行,而问题的分解基于
原问题本身包含的信息;然后,自顶向下地递归求解每个
自顶向下
自自顶顶向向下下
子问题。由于在快速排序过程中存在不是基于比较的位置
交换,因此,快速排序是不稳定的。
• 这种自顶向下分治策略的编程模式如下:
• 如果问题规模足够小,直接求解,否则
• 执行求解动作,将原问题分解为规模更小的子问题;
• 递归地求解每个子问题;
• 因为求解动作在分解之前进行,在对每个子问题求解
之后,不需要合并过程。
• 归并排序:
• 在分解时,只是单纯地将原问题分解为两个规模减半的子
问题;在分解过程中,没有任何对原问题所含信息的利
用,没有任何尝试对问题求解的动作;这种分解持续进
行,直到子问题规模降足够小(为 ),这时子问题直接
1
得解;然后,自底向上地合并子问题的解,这时才真正利
自底向上
自自底底向向上上
用原问题的特定信息,执行求解动作,对元素进行比较。
• 这种自底向上分治策略的编程模式如下:
• 如果问题规模足够小,直接求解,
• 否则单纯地分解原问题为规模更小的子问题,
• 并持续这种分解;
• 执行求解动作,将子问题的解合并为原问题的解。
文档评论(0)