算法设计与分析第二章作业

1、对二分法思想的体会:

二分搜索方法充分利用了元素间的次序关系,采用分治策略,其基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找出x,算法终止;如果xa[n/2],则只在数组a的右半部继续搜索x。具体算法如下:

int BinarySearch(Type a[],const Type& x,int n){

//在a[0]<=a[1]<=...<=a[n-1]中搜索X

//找到x时返回其在数组中的位置,否则返回-1
int left=0; int right =n-1;
while(left<=right){
int mid = (left+right)/2;
if(x==a[mid]) return mid;
if(x>a[mid])left=mid+1;
else right=mid-1;
}
return -1;//未找到x
}

每执行一次while循环,待搜索数组的大小就减小一半。在最坏情况下,while循环被执行了O(logn)次。循环体内运算时间需要O(1)时间,因此二分算法在最坏情况下的计算时间复杂性为O(logn)。

 

2、结对编程情况汇报:

在结对编程中,我们先讨论好,得出大概的算法思想,然后主要由我负责打代码,然后另一个同学在旁边看着,看到有错的地方会提醒我改过来。调试出错后,我们两个一起找bug,不断修改,直到程序通过。我觉得这样,两人合作编程,能有效提高效率。在听同学的想法时,也能让我找到自己平时解决问题时思考不足的地方,从而有利于提高自己的思考和编程能力。

你可能感兴趣的:(算法设计与分析第二章作业)