算法设计复习

发布 2022-01-11 03:07:28 阅读 3915

一、 查找二叉树。

1、 什么是二分查找树?

它是二叉树,具有左子树中的每个节点值都小于根节点值,右子树中的每个节点值都大于根节点值的性质。

2、如何查找?

1)将该值与根结点进行比较,2)若相等,则查找成功,结束查找;

3)若小于,则对左子树进行查找操作,回到步骤(1);

4)若大于,则对右子树进行查找操作,回到步骤(1);

5)不满足(2)(3)(4)的条件,则查找失败,结束查找。

3、如何插入?

1)将插入的值与根结点相比,如相等,则算法结束;若为空树,则直接插入;

2)若小于,且左子树不为空,则对左子树进行插入操作,回到步骤(1),若左子树为空,则直接插入,算法结束;

3)若大于,且右子树不为空,则对右子树进行插入操作,回到步骤(1),若右子树为空,则直接插入,算法结束。

二、 堆。1、 什么是堆?

它是一棵完全二叉树,且每棵树都满足根结点值小于子树中其他结点值的性质。

2、 如何插入?

1) 为插入的堆增加一个存储单元存放要插入的值;

2) 将该值与其所在树的父亲结点比较;

3) 若小于,则交换,回到步骤(2);

4) 若大于,则结束交换,插入成功。

3、 陈述堆排序的算法?

先将这序列构造成一个最小堆,然后从堆中逐次弹出根结点,则得到由小到大的序列。

4.堆中结点(堆的根结点)的删除?

根据堆的定义,根结点值小于其子结点的值)

1) 将堆的最后一个叶子结点的值存放在堆的根结点(称交换了的叶子节点为该节点);

2) 将该节点与其子结点中较小的那个结点进行比较;

3) 若该节点》子结点,则交换,回到步骤(2);

4) 若该节点《子结点,则结束交换,删除成功。

三、 图。1、 图的表示?

分为邻接矩阵和邻接表(老师给出一个图,要会写出它的相应表示)

2、 什么是拓扑排序。

是对有向无环图的顶点的一种排序,它使得如果存在一条从vi到vj的路径,那么在排序中的vj出现在vi的后面。

3、 陈述拓扑排序算法。

1) 根据图示,找出入度为0的顶点;

2) 删除该顶点,并将由这个顶点所出射的箭头删去(即与其相连的顶点度数-1),回到步骤(1)(直至图中没有前驱的顶点为止)。

4、 最短路径(大本营)

假设顶点v1为源点,顶点vt为终点,由短到长列举从v1出发到vt的路径,则第一次出现的路径即为最短路径。

5、 最小生成数。

一个无向图g的最小生成树是以最小的代价将图中所有顶点关联起来的边所构造而成的树。

6、 最大流量。

它指由某一发点沿着弧的方向到达终点,其总流量最大。

—什么事桶排序?

其思想是,若所排的关键字(整型时)在一个明显的范围内,可以创建有限个有序的桶来存放对应的有序的值,顺序输出各桶的值,将得到一个有序的序列。

四、 学习算法的目的。

学会**重用、使用良好的程序设计技巧的同时让学生具备算法分析的能力,学会开发这种具有最高的效率的程序。

1、 给一个图,一个起点,由短到长的列出不带环的路径。

2、 查找树。

3、 堆。4、 画出一个邻接矩阵。

算法设计与分析复习

12 动态规划算法基本思想 自底向上 全局最优 讲带求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。与分治法不同的是 适用于动态规划法求解的问题,经分解得到的子问题往往不是互相独立的。最优子结构性质 问题的最优解包含了其子问题的最优解 子问题重叠性质 在用递归算法自顶...

算法设计与分析复习

分治法求全排列。算法描述。分治法求解问题分为三个步骤 分解 将问题分为若干个子问题。解决 递归地求解每个子问题。合并 将每个子问题的解合并成为整个问题的解。现在我们需要求具有n个元素的数组a的全排列。例如 大小为3的数组a a,b,c 为方便起见,我把引号全都省略了,其实应该是a a b c 下同 ...

算法分析与设计复习

一 迪杰斯特拉算法。1 对下图中的有向图,应用dijkstra优化算法计算从源顶点0到其它顶点间最短路径。2 利用优化的dijkstra算法求解以节点1为源节点到其他各个节点。的的最短路径。用贪心法求解,写出具体步骤 二 多波段图问题。1 用动态规划法求下图中从源点0到终点8的最短路径,写出具体步骤...