第二章作业

 我认为二分法的基本思想:假设数据是按非降序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。个人觉得这种方法体现了“逼近”思想,通过不断地划分,不断的靠近问题的答案。

   通过这个思想,能够有效地将一些规模较大的,较为复杂的问题简化,将他们分解成一些较小的子问题,提高效率,节约时间。体现在时间复杂度上就是,二分查找算法的最坏时间复杂度也只是O(Logn)。相比起不断地遍历,在大型数据的情况下,效率得到了极大的提高。

结合编程情况汇报:

第一道编程题,看了一下题目发现就是考快排,方法有两种我想到的:一种是直接调用系统sort函数排好序,一种是写出快排然后调用,其实sort在数据较大的时候也相当于快排,时间复杂度为ologn

第二道编程题:我发现读了很久也没什么思路,最后是用了不断找最小,把最小的数不断前移,然后计算得到结果的,虽然可以用分治法,但是看了同学的代码发现分治法的代码有些看不懂,而且不是很好编,最后还是使用了自己的方法通过了代码;

我和计科1的许世顺最后第一题达成共识都使用了快排的方法完成,第二题和另外一个董钧yao的小组达成共识,都使用了找最小值并不断前移然后计算num的方法做。

posted on 2018-10-14 12:44  suanfasfather  阅读(97)  评论(0编辑  收藏  举报

导航