码迷,mamicode.com
首页 > 其他好文 > 详细

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

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

标签:turn   ddl   return   出错   效率   顺序   arc   大致   nbsp   

一、对二分法思想的体会

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结对过程中,出现问题两个人一起捋顺代码的实现过程,很快找出其中发现的错误。一些迷惑的问题两个人一起讨论也较容易找出答案。结对编程也使我们也了解到了别人有关代码的一些想法,学到很多东西,提高了编程的效率,拓宽了自己的解题思维。

    

 

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

标签:turn   ddl   return   出错   效率   顺序   arc   大致   nbsp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!