快排和归并的比较.pdf

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

tangtianbao1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档