算法期末复习 | 第①②章 概述&递归分治


第①②章 概述&递归分治
第③章 动态规划
第④章 贪心算法
第⑤⑥章 回溯法&分支界限

大家好~这是我第一次发博文,学期末了想复习一下算法,来熟悉一下markdown编辑器,同时也能复习一下算法的知识点。以下主要整理老师画的重点算法(●’◡’●)

第一章 算法引论

1.1算法与程序

  • 算法定义:解决问题的方法或过程
  • 算法的性质:
    (1) 输入:有零个或多个外部量作为算法的输入
    (2) 输出:算法产生至少一个量作为输出
    (3) 确定性:组成算法的每条指令是清晰的,无歧义的
    (4) 有限性:算法中每条指令的执行数有限,执行每条指令的时间也有限
  • 程序的定义:是算法用某种程序设计语言的具体实现。
  • 程序与算法的区别:程序可以不满足算法的第四点性质即有限性。例如操作系统,是在无限循环中执行的程序。

1.2算法分析

1.复杂分析:对算法所需需要的两种资源进行估算

 (1) 时间复杂度
 (2) 空间复杂度 

2.数量级

在这里插入图片描述在这里插入图片描述

第二章 递归与分治法

导读

2.1递归算法

定义:直接或间接地调用自身的算法称为递归算法。

  • 猜测
  • 扩展递归
  • 通用递归
通用分治递推式

在这里插入图片描述

2.2分治法

基本思想:将一个较大规模的问题分解为规模较小的子问题, 对这些子问题相互独立与原问题相同。当子问题缩小到很容易求出其解,递归地解这些子问题,然后将子问题的解合并成原问题的解。

2.3合并排序

1.问题描述

将n个元素排成非递减顺序。

2.基本思想

合并排序算法是用分治策略实现对n个元素进行排序的算法。其基本思想是:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。

3.分析
在这里插入图片描述4.代码实现
在这里插入图片描述5.算法分析
在这里插入图片描述

2.4线性时间选择

1.问题描述

输入n个数,请找出第k小值。

2.基本思想

如果能在线性时间内找到一个划分基准,使得按这个基准所划分出的2个子数组的长度都至少为原数组长度的ε倍(0<ε<1是某个正常数),那么就可以在最坏情况下用O(n)时间完成选择任务。

3.求解

A[0:24]={11,3,13,37,43,16,5,7,41,54,19,6,32,25,52,31,8,17,60,33,35,4,57,9,51}

①分组:5个/组 (组数 ceil[n/5] )
②排序找中值
在这里插入图片描述4.结论
在这里插入图片描述

在这里插入图片描述5.代码
在这里插入图片描述
6.算法分析
在这里插入图片描述

随笔

(●’◡’●)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值