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


    二分法:

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

    采用二分法的条件是:

    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; }

    结对编程感想:

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

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

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

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

  • 相关阅读:
    Effective C# 学习笔记(三十五) 了解PLINQ如何实现并行算法
    Effective C# 学习笔记(三十八)理解Dynamic的得与失
    转单例的分析
    获取系统当前音量 和 监听系统音量 ios
    (转) iphone开发资源汇总
    xcode show line numbers
    为了编程方便的效率宏定义的一些代码
    ios6下cocos2d & ipad 调用摄像头报错问题 (在竖屏情况下调用Camera 会导致转屏)
    转KVC
    不记住的
  • 原文地址:https://www.cnblogs.com/LjwCarrot/p/9787204.html
Copyright © 2020-2023  润新知