zoukankan      html  css  js  c++  java
  • 第二章作业

    1、对二分法思想的体会

    二分法看似简单,却可以解决许多难题,例如分派问题等等。它是运用分治策略的一个例子,其基本思想就是将n个元素分成个数大致相同的两半,取a[n / 2]与x作比较。如果x = a[n / 2],则找到x,算法终止;如果x < a[n /2],则只在数组a的右半边继续搜索x。整个算法时间复杂度为O(logn)。

    该代码为记录次数的二分查找(循环):

    int BS(int a[],int x, int n){
        int l = 0;
        int r = n - 1;
        int count = 0;
        while(l <= r){
        count ++;
        int m =(l + r) / 2;
        if(x == a[m]) {
            cout << m <<endl << count;
            return m;
        }
        if(x > a[m]){
            l = m+1;
            }
        else {
            r = m-1;
        }
        }
    
        cout << "-1" <<endl << count;
        return -1;
    }
    View Code

    该代码为记录次数的二分查找(递归):

    int BS(int a[], int x, int l, int r, int &count){
        count ++;
        if(l == r){
            if(x == a[l])
                return l;
            else
                return -1;
        while(l < r){
            int m = (l + r) / 2;
            if(x == a[m])
                return m;
            if(x < a[m]) 
                return BS(a, x, l, m-1, count);
            if(x > a[m])
                return BS(a, x, m+1, r, count);
        }
        }
    }
    View Code

    对于其他的二分法的变形,有可能有难度,但是只要掌握了原理最后都会迎刃而解。

    2、结对编程情况汇报

    我与我的小伙伴詹泽伟同学在编程中相处融洽,有时我想破脑壳都没debug,他一眼就看出来了,团队的力量还是强大的,为我的小伙伴点赞!下次还可以一起打更难的题!

  • 相关阅读:
    Jenkins安装以及邮件配置
    TUXEDO管理命令总结
    QTP的退出函数
    QTP 启动应用软件方法
    Robot framework 和RIDE 关系
    使用pycharm编写和运行RF脚本
    刷题-力扣-102. 二叉树的层序遍历
    刷题-力扣-反转链表
    刷题-牛客-判断链表中是否有环
    刷题-力扣-278. 第一个错误的版本
  • 原文地址:https://www.cnblogs.com/yyxbokewang/p/11637413.html
Copyright © 2011-2022 走看看