对二分法思想的体会以及结对编程的感想

二分法:

二分思想是解决编程问题的一个重要思想,通过分半不断缩小判定区间,来降低问题规模,最后达到降低问题复杂度的目的。

采用二分法的条件是:

1、符合单调性               2、中间值mid可判定

二分搜索

典型的二分法例子是二分搜索算法,算法将n个有序元素分成大致相同的两半,通过对中间值的判定,确定所求目标数所在区间,

在不断进行区间分半操作,缩小判定范围,直到找到目标值。

采用二分搜索算法需要满足:1、数列有序       2、顺序结构存储(链式存储对结点操作只能通过next指针操作,对元素下标操作不合适) 

时间复杂度:O(logn)

代码(非递归)

int BinSearch(int a[],int left,int right,int key)
{
    if(left>right)
    return -1; int mid = (left + right) >> 1; if(a[mid] == key)
    return mid; else if(a[mid] > key)
    BinSearch(a,left,mid-1,key); else
    BinSearch(a,mid + 1,right,key); }
代码实现:(递归)
int BinSearch(int a[],int n,int key)
{
    int left = 0,right = n-1;
    while(left <= right)
    {
        int mid = (left + right) >> 1;
        if(a[mid] == key)
      return mid; else if(a[mid] > key)
      right = mid - 1; else
      left = mid + 1; }   return -1; }

 

结对编程感想:

在我看来结对编程的目的,主要是学习不同风格的代码和理解同种算法的多种不同思想,通过结对之间的相互

沟通和交流,更容易从多个角度来理解算法,也能促进共同进步。同时也能加强对代码阅读的能力,因为在今后

的工作或者学习中,有很大部分的代码是分工合作完成,因此学会阅读别人代码十分重要,当然写出易懂优美的代码

也是自己努力的目标。在结对编程中能够互相学习,共同进步,是非常有意义的!

你可能感兴趣的:(对二分法思想的体会以及结对编程的感想)