湖南大学算法分析与设计期末总复习上(分治、动态规划,贪心部分)

							by--iamnii

这个是我期末考试自己做的总结,把书的重点内容基本梳理了一遍,但是有些上课没有讲的算法就没有归纳,大家可以结合自己老师讲的内容再深入复习。

另外,HNU算法考试基本都是算法思想、代码、应用、时间复杂度几个部分,所以总结的时候也是集中关注这几部分,希望对大家有帮助~

PS:有“应用”的部分一定要会画图或者打表,期中考试考过(活动安排问题之类的)的我就暂时没有总结,有时间再补充吧

分治法

1、基本思想:
将规模为n的问题分为k个规模较小的子问题。子问题和原问题相同且相互独立。递归地解决子问题并将子问题的解合并为原问题的解。一般而言,将问题分为大小相近的子问题是最有效率的。通常将问题一分为二。

2、算法复杂度(重点关注主定理):
在这里插入图片描述在这里插入图片描述

二分搜索

1、算法思想:

将n个元素分成个数大致相同的两半,取a[n/2]与x作比较,如果x= a[n/2],则找到x,算法终止;如果x< a[n/2],则只在数组左半部分继续搜索x;如果x> a[n/2],则只在数组a的右半部分继续搜索x。

2、时间复杂度在这里插入图片描述

3、代码

在这里插入图片描述

归并排序

1、算法思想:

递归:将待排序元素分成大小大致相同的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成所要求的排好序的集合。
非递归:
首先将数组a中相邻元素两两配对,用合并算法将它们排序,构成n/2组长度为2的排好序的子数组段,然后再将它们排序成长度为4的排好序的子数组段,如此继续下去,直到整个数组排好序。

2、算法复杂度在这里插入图片描述

3、代码

(1)递归实现
在这里插入图片描述
(2)非递归
在这里插入图片描述

4、应用

在这里插入图片描述

快速排序

1、算法思想:

①分解(Divide):以a[p]为基准元素将a[p:r]划分成3段alp:q-1],a[q]和a[q+1:r],使a[p:q-1]中任何一个元素小于等于a[q],而 a[q+1:r]中任何一个元素大于等于a[q],下标q在划分过程中确定。
②递归求解(Conquer):通过递归调用快速排序算法,分别对a[p:q-1]和 a[q+1:r]进行排序。

  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值