第二张算法总结

1.分治法体会

  分治法简而言之就是分而治之,将一个问题分为若干个子问题,再将子问题一一求解出来之后再合并回原来的问题,从而解决原本的问题。分治法能够将一个原本比较复杂的问题逐渐缩减为很简单解决的小问题,简单到可以直接求解出来,再合并回去就能将一个复杂的问题解决。

  分治法适用于该问题可以分解为若干个规模较小的相同问题,并且利用该问题分解出的子问题的解可以合并为该问题的解。

  二分查找也是典型的分治法的应用,二分查找有个前提,就是数列是有序的,二分查找的思路就是不断将原问题分为1/2个原问题,判断中间数是否与所查找的数相同则返回,不同就比较大于还是小于,基于结果决定想做查找还是向右查找。

二分查找:

int binarySearch(int a[],int x,int n){
    int l=0;int r=n-1;
    while(l<=r){
        int mid=(l+r)/2;d++;
        if(x==a[mid]) {return mid;}
        else if(x>a[mid]){l=mid+1;}
        else {r=mid-1;}
    }
    return -1;
}
分治法能够将问题简单化,在解决、处理问题方面更加容易,但如果在考虑时间复杂度的情况下,需要更加思考分治法的结果是否合适。
 
2.结对编程情况
  相比一个人做题,打代码,两个人打代码可以互相讨论商量问题解决的思路,能够扩充思路,在打代码的时候能互相学习对方打代码的习惯,了解与自己有什么不一样的地方,学习不同的思路,而且在做题的过程中能够互相提出问题,看出对方代码的问题所在,指出并提出自己的想法,若有不同想法的时候,可以商量解决,多沟通能学到更多的东西,自己打代码的话,以为自己一次就能答对,结果出现一堆错误,在队友的帮助下改正过来非常轻松,队友的能力也很强,能够互相学习,互相进步,期待下一次合作。
posted @ 2019-10-13 11:58  严德怀  阅读(128)  评论(0编辑  收藏  举报