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

二分查找:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480378.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识

Commonsense for Generative Multi-Hop Question Answering Tasks链接&#xff1a; https://arxiv.org/abs/1809.06309背景机器阅读任务按照答案类型的不同&#xff0c;可以大致分为:(1) 分类问题: 从所有候选实体选择一个(2) answer span: 答案是输入文本的一个片段(3) …

Overleaf v2 评测

原文链接&#xff1a;https://www.jianshu.com/p/1d73d4b9e880 Overleaf v2 评测 去年&#xff0c;两个著名的Latex在线编辑器Overleaf和Sharelatex合并了&#xff0c;强强联手&#xff0c;让我们对他们合并之后的新产品充满了期待。最近&#xff0c;他们的新产品发布了&#x…

蚂蚁中间件团队Java面试题:Netty+Redis+Kafka+MongoDB+分布式

蚂蚁中间件一面&#xff1a; 自我介绍 JVM垃圾回收算法和垃圾回收器有哪些&#xff0c;最新的JDK采用什么算法。 新生代和老年代的回收机制。 讲一下ArrayList和linkedlist的区别&#xff0c;ArrayList与HashMap的扩容方式。 Concurrenthashmap1.8后的改动。 Java中的多线…

面试必备!卖萌屋算法工程师思维导图—统计机器学习篇

卖萌屋的妹子们&#xff08;划掉&#xff09;作者团整理的算法工程师思维导图&#xff0c;求职/自我提升/查漏补缺神器。该手册一共分为数据结构与算法、数学基础、统计机器学习和深度学习四个部分。下面是第二部分统计机器学习的内容~公众号后台回复【思维导图】获取完整手册&…

【重磅】全行业事理图谱V3.0正式发布:基于实证的由因求果、由果溯因,因果路径发现

我们一直在事理图谱的探索和应用路上不断前行。。。 【中科院软件所】数据地平线的金融事理图谱Demo已经和大家见面有一段时间了(Demo地址&#xff1a;http://eg.zhiwenben.com/)&#xff0c;这段时间我们收到了很多用户的建议反馈和合作邀约&#xff0c;大家对产品的认可和喜…

算法--二分查找--查找给定条件的值

文章目录1.数据有序且无重复&#xff0c;查找给定值2.数据有序且有重复&#xff0c;查找第1个给定的值3.查找最后一个值等于给定值的元素4.查找第一个大于等于给定值的元素5.查找最后一个小于等于给定值的元素6.查找IP归属&#xff08;利用上面#5代码&#xff09;7.循环有序数组…

论文浅尝 | 利用边缘标签的网络嵌入强化方法

链接&#xff1a;https://arxiv.org/pdf/1809.05124.pdf本文主要关注Network embedding问题&#xff0c;以往的network embedding方法只将是网络中的边看作二分类的边(0,1)&#xff0c;忽略了边的标签信息&#xff0c;本文提出的方法能够较好的保存网络结构和边的语义信息来进行…

2018阿里集团中间件Java面试题(4面)

持续分享阿里技术面试 最新天猫3轮面试题目&#xff1a;虚拟机并发锁Sql防注入Zookeeper 最新阿里内推高级Java面试题 蚂蚁金服4轮面经&#xff08;Java研发&#xff09;:G1收集器连接池分布式架构 天猫研发团队&#xff08;4面全题目&#xff09;&#xff1a;并发压测Mina事…

卷积神经网络中十大令人拍案叫绝的操作

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;Justin ho来源&#xff1a;https://zhuanlan.zhihu.com/p/28749411前言CNN从2012年的AlexNet发展至今&#xff0c;科学家们发明出各种各样的CNN模型&#xff0c;一个比一个深&#xff0c;一个比一个准确&#xff0c;一个…

python--从入门到实践--chapter 11 代码测试unittest

编写的代码需要测试是否有Bug 1.函数测试 city_functions.py def city_country(city, country):return str(city) , str(country)city_country_unittest.py import unittest #导入测试模块 from city_functions import city_country as cc class citytest(unittest.TestC…

刘升平 | 基于知识图谱的人机对话系统

本文转载自公众号&#xff1a;AI科技大本营。 分享嘉宾 | 刘升平&#xff08;云知声 AI Labs 资深技术专家&#xff09;来源 | AI 科技大本营在线公开课人机对话系统&#xff0c;或者会话交互&#xff0c;有望成为物联…

最强Java面试题全部合集,涵盖BAT大厂面试必考的9大技术!-强烈建议收藏

过去2年我持续分享了BAT TMD为代表的大厂最新面试题目&#xff0c;特别是蚂蚁金服、天猫、淘宝、头条、拼多多等Java面试题目。 过去2年&#xff0c;我已经成功的帮助了部分同学进入了大厂。 2020开始&#xff0c;我依然会为大家带来最新的大厂现场面试专场题目&#xff0c;希…

杨强教授新番!破解机器学习数据孤岛和数据保护难题

一只小狐狸带你解锁 炼丹术&NLP 秘籍移动互联技术这把“温柔刀”&#xff0c;带来巨大便利之余&#xff0c;也将我们的个人数据放进了橱窗&#xff0c;为“推动信息技术发展”而供人调取。我们都清楚网络“裸奔”的行为很混乱&#xff0c;但你知道到底有多乱吗&#xff1f;…

POJ 3122 分披萨(二分查找)

题目链接&#xff1a;http://poj.org/problem?id3122 题目大意&#xff1a; 有 n 块披萨&#xff08;大小不一样&#xff09;&#xff0c; f 个人分&#xff0c;包含主人自己 f1 人&#xff1b; 每人吃的披萨必须是一块披萨上切下来的。每个人吃的披萨相等&#xff0c;披萨可…

没错,继事理图谱后,我们又搞事情了:数地工场自然语言处理语义开放平台正式对外发布!

2020年的钟声即将敲响&#xff0c;在这辞旧迎新之际&#xff0c;经过近几年在Fintech领域中的自然语言处理技术研发和产品迭代积累&#xff0c;数据地平线Datahorizon迎来重大更新&#xff0c;以数据、事件、逻辑的语义toolbox为愿景的数地工场开放平台V1.0正式对外发布。 数地…

论文浅尝 | Understanding Black-box Predictions via Influence Func

Cite: Koh P W, Liang P. Understanding black-box predictions via influence functions[J]. arXiv preprint arXiv:1703.04730, 2017.链接&#xff1a;https://arxiv.org/pdf/1703.04730GitHub项目地址&#xff1a;http://bit.ly/gt-influence本文使用影响函数(Influence fun…

ICLR2020满分论文 | 为什么梯度裁剪能加速模型训练?

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;苏剑林&#xff08;来自追一科技&#xff0c;人称“苏神”&#xff09;前言需要许多时间步计算的循环神经网络&#xff0c;如LSTM、GRU&#xff0c;往往存在梯度爆炸的问题。其目标函数可能存在悬崖一样斜率较大的区域&…

快手高级Java四轮面试题:设计模式+红黑树+Java锁+Redis等

快手Java一面&#xff08;一个小时十分钟&#xff09; 1.自我介绍 2.说说B树和B树的区别&#xff0c;优缺点等&#xff1f; 3聊聊Spring&#xff0c;主要IOC等等 4多线程JUC包下的一些常见的类&#xff0c;比如CountDownLatch、Semaphore等 5.锁的概念&#xff0c;锁相关的…

数据结构--跳表SkipList

对单链表查找一个元素的时间复杂度是 O(n)通过对链表建立多级索引的结构&#xff0c;就是跳表&#xff0c;查找任意数据、插入数据、删除数据的时间复杂度均为 O(log n)前提&#xff1a;建立了索引&#xff0c;用空间换时间的思路(每两个节点建立一个索引)索引节点总和 n/2n/4n…

领域词汇知识库的类型、可用资源与构建技术漫谈

词是语言系统中重要的语言单元&#xff0c;词语是开展文本处理的基础&#xff0c;在语义表示上具有比字符更丰富的表达能力。词语具有领域特性&#xff0c;不同的领域具有不同的词汇体系&#xff0c;如军事领域、医疗领域、公共治安领域、金融领域之间存在着很大的差异性。这种…