联系作者:humminwang@163.com

二分法

  • 对于区间 [ a , b ] [a,b] [a,b]上连续不断且 f ( a ) ⋅ f ( b ) < 0 f(a)·f(b)<0 f(a)⋅f(b)<0的函数 y = f ( x ) y=f(x) y=f(x),通过不断地把函数 f ( x ) f(x) f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
  • 通俗语言就是将搜索空间不断的减半,从而逼近解的过程。

从二分查找来看二分法:

例子:在一个一维 有序 数组中,判断数组中是否有值为 t a r g e t target target的数存在。

  • 首先判断数组中间值是否大于目标值,如果大于,则将搜索空间变为前半段,删除后半段。反之同理。

迭代算法(时间复杂度O(log(n)),空间复杂度O(1))

int binarySearch(vector<int> arr,int key){int low=0; //数组最小索引值int high=arr.size()-1; //数组最大索引值while(low<high){int mid==(low+high)/2;if(key==arr[mid]){return mid+1;}else if(key>arr[mid]){low=mid+1;}else{high=mid-1;}}return -1;//没有找到
}

递归算法(时间复杂度O(log(n)),空间复杂度O(n))

int binarySearch(vector<int> arr,int low,int high,int key){if(low>high){return -1;}int mid=(low+high)/2;if(key==arr[mid]){return mid+1;}else if(key<arr[mid]){high=mid-1;return binarySearch(arr,low,high,key);}else{low=mid+1;return binarySearch(arr,low,high,key);}
}
Reference:
  • https://blog.csdn.net/u011707827/article/details/50847390
  • https://blog.csdn.net/u012194956/article/details/79103843

【经典算法】·二分法相关推荐

  1. java架构师进阶之独孤九剑(一)-算法思想与经典算法

    " 这是整个架构师连载系列,分为9大步骤,我们现在还在第一个步骤:程序设计和开发->数据结构与算法. 我们今天讲解重点讲解算法. 算法思想 1 贪心思想 顾名思义,贪心算法总是作出在当 ...

  2. 经典算法(4)图解快速排序算法及代码实现

    写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...

  3. 经典算法详解--CART分类决策树、回归树和模型树

    Classification And Regression Tree(CART)是一种很重要的机器学习算法,既可以用于创建分类树(Classification Tree),也可以用于创建回归树(Reg ...

  4. 数据挖掘的一些经典算法

    数据挖掘能做以下七种不同事情 (分析方法): 数据挖掘能做以下七种不同事情 · 分类 (Classification) · 估计(Estimation) · 预测(Prediction) · 相关性分 ...

  5. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  6. 经典算法书籍推荐以及算法书排行【算法四库全书】

    经典算法书籍推荐以及算法书排行[算法四库全书] 作者:霞落满天   https://linuxstyle.blog.csdn.net/    https://blog.csdn.net/21aspne ...

  7. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法

    原文:经典算法题每日演练--第六题 协同推荐SlopeOne 算法 相信大家对如下的Category都很熟悉,很多网站都有类似如下的功能,"商品推荐","猜你喜欢&quo ...

  8. 白话经典算法系列之七 堆与堆排序

     堆排序与高速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法.学习堆排序前,先解说下什么是数据结构中的二叉堆. 二叉堆的定义 二叉堆是全然二叉树或者是近似全然二叉树. 二叉堆满 ...

  9. 免费技术直播:唐宇迪带你一节课了解机器学习经典算法

    常常有小伙伴在后台反馈:机器学习经典算法有哪些? 自学难度大又没有效果,该怎么办? CSDN为了解决这个难题,联合唐宇迪老师为大家带来了一场精彩的直播[一节课掌握机器学习经典算法-线性回归模型].本次 ...

  10. 一文了解迁移学习经典算法

    来源 | linolzhang的CSDN博客 作者 | linolzhang ▌一. 了解迁移学习 迁移学习(Transfer Learning)目标是将从一个环境中学到的知识用来帮助新环境中的学习任 ...

最新文章

  1. 深度学习两大基础Tricks:Dropout和BN详解
  2. np.array_split可以不均等划分 np.split为均等划分
  3. 测试JdbcTemplate执行SQL语句和存储过程
  4. 李开复:谷歌产品经理眼中的产品经理
  5. windows php cli 后台运行_【续】windows环境redis未授权利用方式梳理
  6. 【转载】图论 500题——主要为hdu/poj/zoj
  7. 【测试点分析】1035 Password (20 分)
  8. 10-30SQLserver基础--(备份和还原、分离和附加数据库)、语句查询操作
  9. oracle_Grid Infrastructure 启动的五大问题
  10. spring cloud学习笔记02
  11. 九、Linux 软件包安装
  12. ZOJ-2364 Data Transmission 分层图阻塞流 Dinic+贪心预流
  13. 当纺织遇上阿里云,数学博士钻进车间要让企业更高效
  14. tkmybatis能连接oracle吗,《放弃Mybatis使用tkMybatis》
  15. 计算机科学与技术军训,计算机科学与技术学院召开2018级新生军训动员大会
  16. 华为Nova7+1=荣耀50?我看未必
  17. nginx反向代理和正向代理
  18. 如何处理设计的条码与打印出来的不一样的问题
  19. DB2-SQLSTATE 消息大全---[IBM官方]
  20. 极简权限认证必须掌握【代码+原理+建议收藏】

热门文章

  1. 安装sql server 2008 报错“检查 Microsoft Visual Studio 2008 的早期版本”失败的问题解
  2. 假设检验中原假设和备择假设的选取问题
  3. 抖音视频SEO排名获客软件。
  4. 硬币面值组合的算法题解
  5. 用ThoughtWorks.QRCode生成二维码时出现“索引超出了数组界限”的错误
  6. UTF-8转为ASCII(转)
  7. 《五种时间:重建人生秩序》读书笔记
  8. 如何停止Monkey测试
  9. HTML点击图片,弹窗并放大
  10. vs2015已停止工作,事件名称APPCRASH 故障模块KERNELBASE.dll