动态法

1)二分查找法

可以看出非组合的尾递归,可以用循环来取代。

template<typename T>
int centerFind(const vector<T>& source,const T& finder)
{
    int ret=-2;
    int startIndex=0;
    int endIndex=source.size()-1;
    int CenterIndex=startIndex+(endIndex-startIndex)/2;

    while(ret==-2)
    {
        if(CenterIndex==startIndex&&startIndex==endIndex)//1个数
        {
            if(source[CenterIndex]==finder)
            {
                ret=CenterIndex;
            }
            else
            {
                ret=-1;
            }
        }
        else
        {
            if(source[CenterIndex]==finder)
            {
                ret=CenterIndex;
            }
            else if(source[CenterIndex]>finder)
            {
                endIndex=CenterIndex-1;
                CenterIndex=startIndex+(endIndex-startIndex)/2;
                if(startIndex>endIndex)
                {
                    ret=-2;
                }
            }
            else
            {
                startIndex=CenterIndex+1;
                CenterIndex=startIndex+(endIndex-startIndex)/2;
                if(startIndex>endIndex)
                {
                    ret=-2;
                }
            }
        }
    }
}
时间: 2024-08-07 21:18:56

动态法的相关文章

进程调度算法

一.进程调度的任务 (1)保存处理机的现场信息.在进行调度时首先要保存当前的处理机的现场信息. (2)按某种算法选取进程.调度程序按某种算法选取进程,将其状态改为运行状态,并准备把处理机分配给它. (3)把处理机分配给进程.由分派程序把处理机分派给该进程,此时需要将选中的进程的进程控制块内有关处理机现场的信息装入处理机相应的各个寄存器中,把处理机的控制权予于该进程,让它在上次的断电出恢复. 二.进程调度算法 轮转调度算法 该算法采用剥夺策略.让就绪进程以FCFS 的方式按时间片轮流使用CPU 的

软件工程结对开发之求一维数组中连续最大子数组之和2

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 结果溢出之后能判断. 二.设计思想 在求最大连续子数组时同样用动态法,对于新增的要求,可以增大随机产生数的倍数,如果结果溢出则输出溢出提示字样,其中int类型rand()随机产生数范围是0~32767,i

北航物理实验

99级物理实验试题 1. 测量电压表内阻的线路如图所示.为电阻箱,为稳压电源,其内阻可忽略不计.实验测得一组不同值时的电压表读数(见下表).试用一元线性归纳法(不要求计算相关系数和不确定度)求出.   20.0 50.0 100.0 200.0 300.0 400.0   2.80 2.72 2.60 2.38 2.20 2.04 (一元线性回归的计算公式为:) 解: 令,则(由于的有效数字多,精度高,故用做) , ,.   1 2 3 4 5 6 平均   2.8 2.72 2.6 2.33

传感器系列之4.5温湿度传感器

4.5 温湿数据采集实验 一.实验目的 了解智能传感器DHT11的原理与应用 掌握智能传感器DHT11的编程与操作方法 理解微处理器与湿度传感器DHT11之间的通讯 二.实验材料 具有USB 串口通讯的PC 机1 台 ADS1.2 集成开发软件1 套 J-Link-ARM 仿真器及软件1 套 NXP LPC2378 实验节点板1 个 LCD 显示实验板1 个 温湿度传感器模块1个 三.实验原理 振动传感器实验环境由PC机(安装有Windows XP操作系统.ADS1.2集成开发环境和J-Link

《魔幻记忆100%》有感笔记

一切都离不开你的记忆力!! 更好的记忆力是什么? 它能使你搞清失败与胜利之间的差异: 它能把你从不愉快的黑暗中引向幸福光明: 它能带你跨过胆怯的门槛进入自信的世界: 它能使你排除优柔寡断.多疑和自卑感的弊病: 1.花一点时间思索你的思考方式 2.魔幻记忆三大要素:资讯.资讯之间的连结.管理资讯及连结的过程 3.成功更优秀的思想家 4.一切知识的获得都是记忆,记忆是一切智力活动的基础 5.把两个形象联系起来,记忆的最基本规律就是对新的信息同已知的事物联系起来 6.敢于违背常理的想象 7.逆常理联想

第13件事 用户和市场需求分析的方法

十步法的第一步是用户与市场分析,说到底其实就是“有没有机会”,这个机会从哪来.其实机会主要来自目标用户.所以这一步主要阐述目标用户群是谁:有什么特征:他们使用产品的场景有哪些:需求痛点是什么:需求频次怎么样:这样的目标用户群聚合起来的市场容量或规模到底有多大. 1.目标用户群分析目标用户群的重要性不言而喻,目标用户群贯穿战略规划.需求分析.用户体验设计和产品运营等产品生命周期关键环节.作为产品经理,应时不时反省一下,这是目标用户群想要的东西吗?这样做有没有偏离既定的目标用户群?产品脱离了目标用户

8-1-边界标识法-动态存储管理-第8章-《数据结构》课本源码-严蔚敏吴伟民版

课本源码部分 第8章  动态存储管理 - 边界标识法 ——<数据结构>-严蔚敏.吴伟民版        源码使用说明  链接??? <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明        课本源码合辑  链接??? <数据结构>课本源码合辑        习题集全解析  链接??? <数据结构题集>习题解析合辑        本源码引入的文件  链接? Status.h        相关测试数据下载  链接? 数据包    

ROS Navigation 局部避障的动态窗口法(DWA)

耳熟能详的局部避障动态窗口法(Dynamic Window Approach) 概述:机器人局比避障规划方法有很多,ROS中主要采用的是动态窗口法(和原来的论文中的dwa方法不一样).动态窗口法主要是在速度(v,w)空间中采样多组速度,并模拟机器人在这些速度下一定时间内的轨迹.在得到多组轨迹后,对这些轨迹进行评价,选取最优得轨迹所对应的速度来驱动机器人运动.该算法的图书店在于动态窗口这个名词,它的含义是依据移动机器人的加减速性能限定速度采样空间在一个可行的动态范围. 1.机器人运动模型 见本博客

python动态演示蛮力法解决凸包问题

最近开了算法课,但是我的算法着实不咋地,一直搞web和逆向,就没怎么编程.记录一下0.0 算法倒是不难实现,但是这个动态演示很烦,从纯粹的可视化小白,强行写完了,写完发现非常简单,只是自己不知道的函数太多了,哭了.... 蛮力法就不用解释了,通俗的说就是把所有可能试一遍. 凸包问题,就是将n个点中某几个点围成一个多边形,除了这n个点,其余的点都在这个多边形内. 核心算法其实就是一个行列式演变而来,后悔没学好线代..... 参考:https://blog.csdn.net/u011001084/a