zoukankan      html  css  js  c++  java
  • 对二分法思想的体会以及结对编程的感想

    二分法:

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

    采用二分法的条件是:

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

    结对编程感想:

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

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

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

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

  • 相关阅读:
    在Eclipse中指定JDK
    VMware桥接模式下主机和和虚机间互相ping不通的处理方法
    CentOS7系列--10.1CentOS7中的GNOME桌面环境
    CentOS7系列--5.3CentOS7中配置和管理Kubernetes
    CentOS7系列--5.2CentOS7中配置和管理Docker
    CentOS7系列--5.1CentOS7中配置和管理KVM
    CentOS7系列--4.1CentOS7中配置DNS服务
    CentOS7系列--3.2CentOS7中配置iSCSI服务
    移动web开发(一)——移动web开发必备知识
    文章索引
  • 原文地址:https://www.cnblogs.com/LjwCarrot/p/9787204.html
Copyright © 2011-2022 走看看