首页 > 编程语言 > 详细

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

时间:2018-10-14 14:51:18      阅读:192      评论:0      收藏:0      [点我收藏+]

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

二分搜索方法充分利用了元素间的次序关系,采用分治策略,其基本思想是将n个元素分成个数大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找出x,算法终止;如果x<a[n/2],则只在数组a的左半部继续搜索x;如果x>a[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,不断修改,直到程序通过。我觉得这样,两人合作编程,能有效提高效率。在听同学的想法时,也能让我找到自己平时解决问题时思考不足的地方,从而有利于提高自己的思考和编程能力。

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

原文:https://www.cnblogs.com/Ypaper/p/9785933.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!