网站大量收购独家精品文档,联系QQ:2885784924

复习提纲-算法.docx

复习提纲-算法.docx

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

1、算法是指解决问题的一种方法或一个过程。

算法是若干指令的有穷序列,满足性质:

输入:有外部提供的量作为算法的输入(0个或多个)。

输出:算法产生至少一个量作为输出。

确定性:组成算法的每条指令是清晰、无歧义的。

有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。

2、算法复杂性是算法所用的计算机资源

最坏情况下的时间复杂度是指算法在所有可能的输入中,执行时间最长的情况所对应的时间复杂度。它表示算法在不利情况下的性能表现。

平均情况下的时间复杂度是指算法在所有可能的输入中,执行时间的平均值所对应的时间复杂度。它表示算法在典型情况下的性能表现

时间复杂度主要受输入规模、输入特性和算法设计有关。

空间复杂度主要受输入规模、输入特性、数据结构和算法设计有关。

大O表示法用于描述算法的上界。

对于函数f(n)和g(n),如果存在正整数c和n0,使得对于所有nn0,都有f(n)=c*g(n),则称f(n)是O(g(n))。

大Ω表示法用于描述算法的下界。

对于函数f(n)和g(n),如果存在正整数c和n0,使得对于所有nn0,都有f(n)=c*g(n),则称f(n)是Ω(g(n))。

3、直接或间接地调用自身的算法称为递归算法。

用函数自身给出定义的函数称为递归函数。

分治法的基本思想是,将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

分治法的算法策略:

(1).分解:将原问题分解为相互独立的、与原问题相同的子问题。

(2).解决:递归求解子问题。

(3).合并:将子问题的解合并,得到原问题的解。

4、二分搜索技术

基本思想:将n个元素分成个数大致相同的两半,取a[n/2]与x进行比较,若x=a[n/2],则找到元素,若xa[n/2],则在数组的左边继续搜索x,若xa[n/2],则在数组的右边继续搜索x。

5、棋盘覆盖

基本思想/解题思路:当k0时,将2^k*2^k的棋盘分割为4个2^(k-1)*2^(k-1)的子棋盘,特殊方格必位于四个子棋盘之一中,其余三个无特殊方格,为将这三个无特殊方格的棋盘转化为特殊棋盘,可以用一个L型骨牌覆盖这三个较小棋盘的会合处,这3个子棋盘上被L型骨牌覆盖的方格就成为该棋盘上的特殊方格,从而将问题转化为4个较小规模的棋盘覆盖问题,递归的使用这种分割,直至棋盘简化为1*1棋盘。

6、合并排序

基本思想:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成要求的排好序的集合。

7、快速排序

基本思想:对于输入的子集合a[p:r],按以下三个步骤进行排序:

1)分解,将以a[p]为基准元素将a[p:r]划分成3段a[p:q-1],a[q]和a[q+1:r],a[p:q-1]中任意一个元素小于a[q],a[q+1:r]中任意一个元素大于a[q],a[q]在划分过程中确定。

2)递归求解,递归调用快速排序函数,分别对a[p:q-1]、a[q+1:r]进行排序。

3)合并,由于a[p:q-1]、a[q+1:r]的排序是就地进行的,因此a[p:q-1]、a[q+1:r]排序后,a[p:r]则已排好序。

8、动态规划算法的基本要素

最优子结构性质:问题的最优解包含其子问题的最优解

重叠子问题性质:在求解问题的过程中,相同的子问题会被多次重复计算。

动态规划的基本步骤:

1)找出最优解的性质,并刻划其结构特征

2)递归的定义最优值

3)以自底向上的方法求解最优值

4)根据求解最优值时得到的信息,构造最优解

9、矩阵连乘问题

10、最长公共子序列

11、贪心算法的概念:贪心算法的是一种解决优化问题的算法设计范式,其基本思想是在每一步选择中都采取当前看起来最优的选择,即贪心的选择局部最优解,以期望这些局部最优解可以推导出全局最优解。

贪心算法的基本要素:

1)最优子结构性质:问题的最优解包含其子问题的最优解

2)贪心选择性质:所求问题的最优解可以通过一系列局部最优解的选择,即贪心的选择来达到。

贪心算法和动态规划算法的比较:

共同点:都需要问题具有最优子结构性质,都用来求优化问题。

不同点:贪心算法每步选择不依赖子问题的解,动态规划每步选择依赖子问题的解。贪心算法还需要问题具有贪心选择性质,动态规划还需要问题具有重叠子问题性质。贪心算法求解是自顶向下的,动态规划的求解是自底向上的。

12、哈夫曼编码的基本思想:将所有字符的频率作为节点构造一个优先队列。然后每次从优先队列中取出两个频率最低的节点,合并它们作为一个新的节点,其频率为两个节点频率之和。将新合并的节点重新压入优先队列。重复以上过程,直到队列

文档评论(0)

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

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

1亿VIP精品文档

相关文档