第二章总结
1.递归
1.1递归是什么:递归是自己定义自己,直接或间接地调用自己的算法。
1.2递归常见类型:多变元递归、多步递归、嵌套递归、联立递归。
1.3优点:可读性强,结构清晰,为调试提供很大便利;
缺点:运行效率较低,空间复杂度和时间复杂度都耗费比较大。
2.分治
2.1分治是什么:把一个问题分成若干个相同的子问题,对子问题进行求解。
2.2.分治思想三个阶段:一个较大问题划分为多个子问题、求解子问题、合并子问题的解,形成原始问题的解。
2.3时间复杂度:当 n = 1 时,T(n) = O(1);当 n > 1 时,T(n) = kT(n / m)+ f(n)。
2.4例子应用:大整数的乘法、Strassen矩阵乘法、棋盘覆盖、合并排序、快速排序。
2.5自己对分治思想的体会:看代码的时候把例子的用到分治思想理解了就觉得很好用,但是自己很难去实现分治算法的三步走,一是经验太少,怎么划分问题没有头绪;二是解决问题和合并解的时候思路不清晰,写代码的时候容易把自己绕晕。另外对求空间复杂度记不住,看一次记一次,没有理解透彻。自己尝试先理解代码然后背代码,再试着自己解释代码。
结对编程情况
由于自己对算法有点弱,和队友编程时两个人的思路都比较混乱,然后互相可能都不能理解队友的思路,两个人都有点难受。不过相比于一个人自己编程,会有被督促的感觉,这点算是对我来说比较好的一个方面。
原文地址:https://www.cnblogs.com/Epher/p/11674807.html
时间: 2024-10-05 04:18:38