对分治法思想的体会:
简单来说分治法就是对一个规模大的问题进行分解,得到规模更小的若干个子问题,对子问题单独求解并合并子问题答案得到原问题答案的解决问题的思想。
其实分治法思想已在大一所学习的算法中有所体现,如二分搜索,但二分搜索规律简单,我并没有在其中体会到分治思想的妙处。但后来通过用分治思想解决求最大连续子段和、大整数的乘法运算、矩阵乘法、棋盘覆盖、线性时间选择等复杂问题时,我实在地体会到分治思想在解决有规律、大规模问题上的妙处。再者,归并排序、快速排序这些时间复杂度较低的排序方法也是运用了分治思想,可见分治思想的广泛运用。
对于使用者来说,可以结合对时间复杂度的考虑来决定是否该使用分治算法。如分治法能将二分搜索的时间复杂度降至O(logn),使求最大连续字段和的时间复杂度为O(nlogn),大整数乘法为O(n^1.59),而规避排序和快速排序的平均时间复杂度为O(nlogn)。
并不是所有的问题都适合用分治思想解决,由原问题分解得到的子问题必须能合并为原问题 的解才能使用分治法。如果分解得到的子问题不是相互独立的,使用分治法可能不能达到降低时间复杂度的目的。
结对编程的情况汇报:
就本次结对编程,我们在协作过程中发现双方的编程习惯和对题目的理解方式不同,在讲解自己的代码时不能让对方理解,还需时间磨合并加强沟通。进度较缓,最终在课堂上并没能对第三个问题进行较深的思考,感到遗憾。但能感受到不同的思考模式、锻炼了自己的表达能力是我不小的收获。