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

一、对二分法思想的体会

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

    

猜你喜欢

转载自www.cnblogs.com/cxna/p/9825452.html