算法第二章作业总结

一、二分法思想体会

  二分搜索算法是运用分治策略的典型例子。在顺序搜索时,需要把数组里的几乎每一个元素与特定元素进行比较,虽然这样的做法简单但也比较机械,花费的时间也比较多(顺序查找的时间复杂度位o(n))。而二分搜索法能更加快速的找到,而且也更贴近人在现实生活中搜索事物所用的方法,即在一堆有序的事物中,每次随机抽取一件出来比较,然后依靠比较结果来逐步缩小搜索范围(范围在每次比较后缩小为原来的一半,缩小问题规模),大大提高了搜索的效率(二分搜素法的时间复杂度为o(lon2(n)))

二、结对编程情况汇报

    本次算法作业对我来说有一定难度,因为上学期学的数据结构的排序算法已经忘掉了许多,算法课后缺少复习,混淆了归并排序和快速排序。

  在做编程题时,我和我的搭档决定先各自尝试着解题。第一题,寻找第k小的数,看了题目里的提示,再结合书本里快速排序的代码,我把代码打了出来,然而我并不完全理解partition函数里的一些操作,以及返回值的作用,这也导致了我不会编find函数。在一番研究以及和搭档相互讨论后,明白了提示的意思,完成了第一个作业。

  第二题,求逆序对数目,这道题的难度对我和我的搭档难度都比较大,在讨论无果后,我们在网上找了答案。在研究答案时,我们都无法理解计算交换次数时“num+=m-i+1”,(我原来认为“num+=j-i-1”,但提交后是部分正确)。我们再一次陷入沉思,我手动地跑了一下程序后,明白了其中的原理,但我又无法清晰地向我的搭档解释,使她充分理解我的意思。

  在结对编程时,搭档之间可以相互讨论,加快问题地解决,还能更快地发现程序编写过程中出现地错误(因为每个人会注意到不同地错误),减少了程序debug的时间,使编程更加高效。

 

你可能感兴趣的:(算法第二章作业总结)