算法复习2:递归与分治策略

1、递归
1)用函数自身给出定义的函数称为递归函数。直接或间接地调用自身的算法称为递归算法。
2)把递归关系式转换为解析式
-代入法:归纳出解析式
·向前代入法:从初始条件开始
·向后代入法:到初始条件终止

2、分治
1)分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
2)在用分治法设计算法时,最好使子问题的规模大致相同。
3)分治法的适用条件
分治法所能解决的问题一般具有以下几个特征:
•该问题的规模缩小到一定的程度就可以容易地解决;
•该问题可以分解为若干个规模较小的相同问题;
•该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题;
•利用该问题分解出的子问题的解可以合并为该问题的解。

3、二分搜索
给定已按升序排好序的n个元素A*0…n-1],现要在这n个元素中找出一特定元素k。
–蛮力算法:遍历、Tworst(n) =O(n)
–二分法:将原问题划分为大小相等的2个子问题的处理方法。
•Divide: 将n个元素分成个数大致相同的两半,取A[n/2]与k比较
•Conquer: 递归地在数组A的左半部或右半部搜索
•Combine: 无
•T(n) = O(logn)

4、合并排序
•基本思想:将待排序元素分成大小相等的两个子集合,分别对两个子集合进行排序,最终将排好序的子集合合并成为所要求的排好序的集合。
时间复杂度:T(n) =O(nlogn)
空间复杂度:额外存储空间为O(n)

5、快速排序

6、大整数的乘法
•设X和Y都是n位的十进制整数,计算它们的乘积XY。
《算法复习2:递归与分治策略》
练习:
《算法复习2:递归与分治策略》

7、Strassen矩阵乘法
• 计算n×n矩阵A和B的乘积。
《算法复习2:递归与分治策略》

8、线性时间选择

9、棋盘覆盖

10、最接近点问题

11、循环赛日程表

    原文作者:递归与分治算法
    原文地址: https://blog.csdn.net/qq_18995813/article/details/51451821
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞