首页 > 其他 > 详细

对二分思想的理解及结对编程

时间:2018-10-21 16:43:51      阅读:159      评论:0      收藏:0      [点我收藏+]

一、对二分法思想的体会

1.二分法是运用分治策略的典型例子,也称折半查找,充分利用了元素间的次序关系,是一种效率较高的查找方法。实现二分算法有递归和非递归两种方式。

2.基本思想:将n个元素分成大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果a<[n/2],则只在数组a的左半部分继续搜索x;如果x>a[n/2],则只在数组的右半部分继续搜索x。

3.代码实现:

int BinarySearch(Type a[],const Type&x,int n)
{
    int left = 0;int right = n-1;
    while(left<=right){
    int middle = (left + right)/2;
    if (x==a[middle]) return middle;
    if(x >= a[middle]) left = middle + 1;
    else right = middle -1;
    }
  return -1;
}

 

4. 关于时间复杂度的分析:

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

5.优点:提高了查找效率,减小了时间复杂度,易于实现

缺点:具有一定的局限性,只能适用于有顺序的数组

二、关于结对编程

     结对编程使我们在编程过程中更易于发现自己的错误,所谓“当局者迷,旁观者清”,有时候自己写的代码不易找出错误。  跟partner结对过程中,出现问题两个人一起捋顺代码的实现过程,很快找出其中发现的错误。一些迷惑的问题两个人一起讨论也较容易找出答案。结对编程也使我们也了解到了别人有关代码的一些想法,学到很多东西,提高了编程的效率,拓宽了自己的解题思维。

    

 

对二分思想的理解及结对编程

原文:https://www.cnblogs.com/cxna/p/9825452.html

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