第1、2周算法课课后体会及结对编程感想

第一、二周的算法课主要讲授了以下内容:

递归:直接或间接地调用自身的算法称为递归算法,亦称函数自身的嵌套调用。

典型的例子:求解斐波那契数列,汉诺塔问题,整数划分问题等。递归较难理解,但实行起来相对而言比较简洁明了,但递归的空间开销往往非常大,即空间复杂度较高,运行时间可能会比较长。

分治法:将一个规模为n的问题分解为K个规模较小的子问题。

典型运用分治策略的例子:二分搜索算法,大整数乘法等。

  

二分法:对已经有序的一组数据运用分治策略,将问题的规模折半缩小,逐步细化,使得计算更便捷,时间复杂度也得到了有效的降低(O(logN))。

 1 #include <iostream>
 2 using namespace std;
 3 int a[10]={1,6,11,12,15,17,24,26,27,29};//初始的数组
 4 
 5 int BiSearch(int l,int r,int val){
 6     if(l==r) return -1;//找不到
 7     int m = (l+r)/2;
 8     if(a[m]==val) return m;
 9     else if(a[m]>val) BiSearch(l,m,val);
10     else BiSearch(m+1,r,val);
11 }
12 
13 int main(){
14     int e;
15     cin>>e;//输入要查找的数字
16     int ans = BiSearch(0,9,e);
17     cout<<ans<<endl;
18 }

结对编程体会:

        我们代码风格比较接近,比较容易看得懂对方的代码。以一个旁观者的姿态去观看他人的代码可以学习一下他人的思路,遇到不懂之处或者对方的纰漏可以及时指出,同时,结对编程也可以让自己更加注重代码风格,尽量避免他人看不懂的情况出现。

扫描二维码关注公众号,回复: 3581224 查看本文章

猜你喜欢

转载自www.cnblogs.com/Benboys/p/9787789.html