二分查找:

  1. 数据需要是顺序表(数组)
  2. 数据必须有序
  3. 可以一次排序,多次查找;如果数据频繁插入,删除操作,就必须保证每次操作后有序,或者查找前继续排序,这样成本高,二分查找不合适
  4. 数据太小,不用二分查找,直接遍历
  5. 数据太大,也不用,因为数组需要连续的内存,存储数据比较吃力
  6. 复杂度 lg2n

题目: 求一个数的平方根

  • 例如:二分法求根号5

    a:折半: 5/2=2.5

    b:平方校验: 2.5*2.5=6.25>5,并且得到当前上限2.5

    c:再次向下折半:2.5/2=1.25

    d:平方校验:1.25*1.25=1.5625<5,得到当前下限1.25

    e:再次折半:2.5-(2.5-1.25)/2=1.875

    f:平方校验:1.875*1.875=3.515625<5,得到当前下限1.875

循环求解:

#include<iostream>
double rootbinarysearch(double num)
{if(num == 1)return 1;double lower = 1, upper = num, curValue;if(lower > upper)std::swap(lower,upper);while(upper-lower > 0.00000001){curValue = lower+(upper-lower)/2;if(curValue*curValue < num)lower = curValue;elseupper = curValue;}return curValue;
}int main()
{double x;std::cin >> x;std::cout << x << "的平方根是 " << rootbinarysearch(x);return 0;
}


递归求解:

/*** @description: 求根号n,递归法* @author: michael ming* @date: 2019/4/15 23:05* @modified by: */
#include <iostream>
double rootbinarysearch_R(double num, double upper, double lower)
{if(num == 1)return 1;if(lower > upper)std::swap(lower,upper);double curValue = lower+(upper-lower)/2;if(upper-lower < 0.00000001)return curValue;if(curValue*curValue < num)return rootbinarysearch_R(num,curValue,upper);elsereturn rootbinarysearch_R(num,lower,curValue);
}int main()
{double x;std::cin >> x;std::cout << x << "的平方根是 " << rootbinarysearch_R(x,x,1);return 0;
}

算法--二分查找--求平方根(循环法/递归法)相关推荐

  1. java 二分查找_计算机入门必备算法——二分查找法

    1.引言 笔者对于计算机的研究一直停滞不前,近期想对一些算法进行复习和进一步的研究,每天都会更新一个新的算法,算法有难有易,层层递进.不希望能学的有多么高深,只希望在一些最基本的算法上有编码的思路,或 ...

  2. 二分查找求上界和下界

    二分查找求上界和下界 假设序列有序,其区间为[left,right)[left, right),设middlemiddle为区间中间值,现在需要获得首个出现元素vv的位置,如果不存在,返回一个位置,在 ...

  3. 算法之牛顿法求平方根+立方根

    算法之牛顿法求平方根+立方根 author:onceday date:2022年6月8日 1.基于Scheme语言 牛顿法基于以下几步来求出平方根: 先给出一个猜测值y 判断猜测值y是否与目标值非常接 ...

  4. 每日一则----算法----二分查找法

    php实现二分查找法 二分查找法称折半查找,需要数组是一个有序的数组 假设我们的数组是一个递增的数组,首先我们需要找到数组的中间位置. 要知道中间位置就需要知道起始位置和结束位置,然后取出中间位置的值 ...

  5. NTC测温中 经典温度查表算法--二分查找法

    说明: 二分查找法的优点:查找速度快 1024个长度的表最长只需10次查表就能得出结果 在用NTC测试温度的方案中,NTC的温度表的长度一般是100-200 有些达到400-500的长度 在这种情况下 ...

  6. 折半查找算法[二分查找法]算法的实现和解决整数溢出问题~

    算法实现的要求: 折半查找法又称为二分查找法,这种方法对待查找的列表有两个要求: 1:必须采用顺序存储结构 2:必须按关键字大小有序排列 算法思想: 将表中间位置记录的关键字与查找关键字进行比较,如果 ...

  7. 算法 - 二分查找(非递归实现二分查找)

    package Algorithm.binarysearchnorecursion;public class BinaaySearchNoRecur {public static void main( ...

  8. Java-数据结构与算法-二分查找法

    1.二分查找法思路:不断缩小范围,直到low <= high 2.代码: 1 package Test; 2 3 import java.util.Arrays; 4 5 public clas ...

  9. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

最新文章

  1. 不会c语言能学习python_为什么很多人学不会C语言?学霸说:你要是像我一样学肯定能行!...
  2. Two conferences重点词汇
  3. 【转】JavaScript eval处理JSON数据 为什么要加括号
  4. 使用artTemplate模板将json转换为html页面
  5. cocos2d-x学习之旅(九): 2.2 盘古开天辟地,进入游戏世界
  6. RichTextBox 中英文混输时,字体样式不同的解决方式
  7. C语言必知专业术语,C语言入门必备单词给你整理好了
  8. 初级电工技术实训考核装置
  9. ArcGIS_一种简单的三维城市建模方法
  10. 《图书管理系统》需求分析
  11. 初中计算机卡片的制作教案,其他教案-贺卡的设计与制作
  12. 使用validate注解做校验以及自定义validate注解
  13. 新闻发布系统——INSERT 语句与 FOREIGN KEY 约束XXX冲突。该冲突发生于数据库XXX,表XXX, column 'XXX。
  14. 唯美手绘美女 性感蝴蝶天使 仙女 金发女郎
  15. Processing.js vs P5.js –有什么区别?
  16. 一款超好的省市区三级联动插件citypicher的使用(数据分从数据库获取或从js文件获取)
  17. 视频传输解决方案,让视频会议更高效
  18. 36. OP-TEE中secure stroage的使用
  19. axure学习帖-中继器二级菜单
  20. 如何开好项目会议︱项目例会

热门文章

  1. linux上安装fio教程,fio工具安装及使用
  2. bzoj 1058: [ZJOI2007]报表统计
  3. CodeVs——T 4919 线段树练习4
  4. 云平台需要开发的底层功能
  5. PHP操作excel类 PHPExcel
  6. Asp.net 编码函数
  7. 哥谈的是语言,不是寂寞
  8. new 与 malloc区别
  9. 理解zookeeper选举机制
  10. 在朋友圈求助的NTP问题~