算法第二章作业

  1. 请谈一下你对分治法思想的体会

分治法的基本思想就是将一个复杂的问题分解成几个规模更小的子问题,并且这些子问题互相独立,且与原问题相同。利用递归解决这种问题,就能将原问题规模分解的足够小,直到子问题变得容易解决。合并子问题,从而得出最后的结果。

分解(divide) ——> 递归求解(conquer) ——> 合并(merge)

(分解子问题   图源https://blog.csdn.net/why_still_confused/article/details/51755899

 

 

分治法的例子

  • 二分查找

有序数组 查找数组中的某个值

将待排序元素分成大小大致相同的2个子集合,分别对2个子集合进行排序,最终将排好序的子集合合并为所要求的排好序的集合。

  • 快速排序

先从数列中取出一个数作为基准数。将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。再对左右区间重复第二步,直到各区间只有一个数。 

 

2.结对编程情况汇报

结对编程我是和饶同学一起的,我们是一个宿舍的,所以比较容易讨论。我觉得结对编程可以让我想问题想的更深一点,因为要把自己的思路说出来,解释给我的partner听。特别要注意的是,因为写出来的代码要两个人一起看,所以变量和函数等的命名,都要同意而且清晰,特别要注意一些代码规范。

在第三周上机的那道实践题里,我们一开始对递归在这道问题里的应用不太了解,经过两个人的讨论,最后才把我们的解题思路确定下来。

希望以后我们能互相督促,共同进步。

 

posted @ 2020-10-03 19:05  伍昕童  阅读(112)  评论(0编辑  收藏  举报