算法设计与分析(期末复习重点)更新中

第一章 算法设计基础

  1. 算法的五大特性:输入、输出、可行性、有穷性、确定性
    (1)输入:一个算法有零个或多个输入。
    (2)输出:一个算法有一个或多个输出。
    (3)可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现(每步可执行)。
    (4)有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。算法的有穷性 意味着不是所有的计算机程序都是算法。
    (5)确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。
  2. 算法的复杂性:时间复杂性和空间复杂性

第二章 算法分析基础

大O符号:

[例] T(n)=3n-1
当n≥1时, T(n)= 3n-1≤3n= O(n)

[例] T(n)=5n2+8n+1
当n≥1时,5n2+8n+1≤5n2+8n+n=5n2+9n≤5n2+9n2≤14n2=O(n2)

公式推导递推问题:
在这里插入图片描述

常用的时间复杂度:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3) <…<Ο(2n)<Ο(n!) <Ο(nn)

第三章 蛮力法

  • 蛮力法的基本思想:蛮力法依赖的基本技术——遍历技术,即采用一定的策略将待求解问题的所有元素依次处理一次,从而找出问题的解。

熟记以下问题使用蛮力法的时间复杂度:

  • 冒泡排序:O(n2)
  • 0/1背包:典型子集问题, O(2n)
  • 任务分配:典型排列问题,O(n!)

其它蛮力法的算法时间复杂度:

  • 串匹配:BF算法:O(n*m)、KMP算法:O(n)
  • 选择排序:O(n2)
  • 最近对问题:O(n3)

第四章 分治法

分治法求解三个阶段:1.划分;2.求解子问题;3.合并;

分治法经典算法问题:

  • 数字旋转方阵
  • 归并排序
  • 快速排序
  • 最大字段和

快速排序

#include<iostream>
using namespace std;

void Quick(int r[],int first,int end);
int part(int r[],int first,int end);

int part(int r[],int first,int end)
{
   
    int i=first,j=end;
    while(i<j)
    {
   
        while(i<j&&r[i]<=r[j])  
            j--; //右侧扫描
        if(i<j)   //将较小记录交换到前面
        {
   
            int temp=r[i];
            r[i]
  • 14
    点赞
  • 247
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 计算机算法设计与分析是计算机科学与技术专业的一门重要课程,该课程旨在培养学生解决复杂问题的能力,提高算法设计与分析的能力。复习该课程的期末考试,我建议可以从以下几个方面进行复习: 首先,复习算法的基本知识。包括递归与分治策略、动态规划、贪心算法、回溯算法等常见算法的基本原理和代码实现方法。 其次,深入理解常见的时间复杂度和空间复杂度分析方法,熟悉不同算法的优缺点,并能在不同问题场景下选择合适的算法。 然后,重点复习常见的排序算法和查找算法,如冒泡排序、插入排序、选择排序、快速排序、堆排序等,以及线性查找、二分查找等。 另外,复习算法,包括图的表示方法、图的遍历算法、最短路径算法(Dijkstra算法、Floyd-Warshall算法)和最小生成树算法(Prim算法、Kruskal算法)等。 最后,通过做一些实例题和习题,加深对算法的理解和应用能力,提高解题的效率。 在复习过程,可以参考csdn等一些相关的学习资源,查找更多的学习资料和参考题目,加深对算法的认识。同时也可以结合自己的课堂笔记、教材和讲义,全面复习和总结。 总之,计算机算法设计与分析期末考试的复习需要全面、系统地复习相关算法和数据结构的知识,并能够熟练应用到实际问题。通过不断的实践和练习,提高解题的能力和效率。 ### 回答2: 计算机算法设计与分析期末考试复习题介绍了一些重要的算法和数据结构,学生们可以通过复习这些题目来准备考试。以下是一些常见的题型和解答思路: 1. 排序算法:考察对常见排序算法的理解和分析。如快速排序、归并排序、堆排序等。需要掌握它们的时间复杂度、原理和实现方式,以及它们在不同场景下的优劣势。 2. 搜索算法:考察对常见搜索算法的掌握程度。如深度优先搜索(DFS)、广度优先搜索(BFS)、二分查找等。需要了解它们的原理、如何实现以及最优应用场景。 3. 图算法:考察对图算法的熟悉程度。如最短路径算法(如Dijkstra算法、Floyd-Warshall算法)、最小生成树算法(如Prim算法、Kruskal算法)等。需要了解它们的原理、时间复杂度和应用场景。 4. 动态规划:考察对动态规划算法的理解和应用。需要掌握动态规划的基本概念、状态转移方程的建立和求解。重点理解背包问题、最长公共子序列等常见问题的动态规划解法。 5. 数据结构:考察对常见数据结构的掌握程度。如数组、链表、栈、队列、二叉树、图等。需要了解它们的基本操作、特性、应用场景以及在算法的使用方法。 在复习期间,建议学生们重点关注基础概念的理解、算法原理的掌握以及常见题目的解题技巧。同时,通过做大量的练习题来提升自己的算法设计和分析能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值