当前位置: 首页 > news >正文

南京专业建站/推广网站的公司

南京专业建站,推广网站的公司,html简单的个人主页,一级a做爰片365网站基础二分法及其拓展应用一、二分法二、实现方式三、问题拓展1.返回第一个大于等于x的元素位置2.返回第一个大于x的元素位置3.根号2近似值的计算4.装水问题(方程解的逼近)一、二分法 二分法应用于具有单调性的一组数据的查找中,能够将复杂度由…

基础二分法及其拓展应用

  • 一、二分法
  • 二、实现方式
  • 三、问题拓展
    • 1.返回第一个大于等于x的元素位置
    • 2.返回第一个大于x的元素位置
    • 3.根号2近似值的计算
    • 4.装水问题(方程解的逼近)

一、二分法

二分法应用于具有单调性的一组数据的查找中,能够将复杂度由O(N)降低到O(logN),实现方式简单,通过对比目标数组下表为mid处数值与查找值之间的大小关系以不断更新[left,right]的值,最终找到目标数。其中也包含着二叉树的思想,是不错的查找算法。

二分法可以使用递归实现,但在程序设计时更多采用非递归方式

tip:如果二分上界超过int型数据范围的一半,那么当欲查询元素在序列靠后的位置时可能会导致
mid=(left+right)/2这条语句溢出,因此考虑使用mid = left + (right-left)/2来替代

二、实现方式

# include<cstdio>//假设A[]单调递增
int binarySearch(int A[], int left, int right, int x){int mid;while(left <= right){mid = (left+right)/2;if(A[mid]==x)return mid;else if(A[mid]>x)right = mid-1;elseleft = mid+1;}return -1;
}

注意left<=right中的等于,因为倘若没有这个等于会漏掉一种情况下数据的对比,即mid== left == right的情况下A[mid]是否等于x。

三、问题拓展

1.2都是建立在单增条件下的查找

1.返回第一个大于等于x的元素位置

如果mid>=x,则直接返回
如果mid<x, 则将left增加为mid+1

# include<cstdio>//假设A[]单调递增
int binarySearch(int A[], int left, int right, int x){int mid;if(A[right]<x) //假设最大的都小于x,说明找不到return -1;while(left < right){mid = (left+right)/2;if(A[mid]>=x)right = mid;//往[left,mid]里寻找elseleft = mid+1;//往[mid+1,right]里寻找}return left;
}

2.返回第一个大于x的元素位置

int binarySearch(int A[], int left, int right, int x){int mid;if(A[right]<x) //假设最大的都小于x,说明找不到return -1;while(left < right){mid = (left+right)/2;if(A[mid]>x)//往[left,mid]寻找right = mid;else left = mid+1;//往[mid+1,right]寻找}return left;
}

进而我们能够推导出求返回特定元素的位置。

3.根号2近似值的计算

进一步对于任何单调函数我们都能够通过二分法逼近这个值。(三次根号,对数函数等等)

# include<cstdio>
# include<algorithm>
using namespace std;const double eps = 1e-6;
double f(double x){return x*x;
}int main()
{double mid,left=0,right=2;while((right-left)>eps){mid = (left+right)/2;if(f(mid)>2)right = mid;elseleft = mid;}printf("%lf",mid);
}

4.装水问题(方程解的逼近)

在这里插入图片描述

一侧面为半圆的储水装置,该半圆的半径为R,要求往里面装入高位h的水,使其侧面看去的面积S1与半圆面积S2比例恰好为r,如上图所示,现给定R和r,求高度h。
显然,当h增大时,r一定增大,这是一个单调增的函数,满足使用二分法。

# include<cstdio>
# include<algorithm>
# include<cmath>
const double pi = acos(-1.0); //PI
const double eps = 1e-5; //精度到1e-5
using namespace std;double area(double height, double R)
{double alpha = 2*acos((R-height)/R);return alpha*R*R/2;
}double height(double R, double ratio)
{double S2 = pi*R*R/2, S1 = S2*ratio,left = 0,right = R,mid;while(right-left>eps){mid = (right+left)/2;if(area(mid,R)>S1)right = mid;elseleft = mid;}return mid;
}int main()
{double h = height(5.2,0.5);printf("%lf",h);
}
http://www.jmfq.cn/news/5156425.html

相关文章:

  • 网站建设 参照 标准规范/什么是网络销售
  • 乌鲁木齐市做平台网站/百度推广咨询
  • 重庆网站建设 优化/怎么引流到微信呢
  • 泉州哪家网站建设公司好/百度百度一下你就知道
  • 新加坡网站开发公司/微信营销软件排行榜
  • 北京网站建设怎么样天/互动营销的方式有哪些
  • 制作网站的网页/网站快速优化排名官网
  • 嘉兴网站建设定制网站/站长工具关键词排名怎么查
  • 购买网站广告位/软件培训机构有哪些?哪个比较好
  • 制作一个简单的php网站/百度联盟怎么加入赚钱
  • 网站手机端做排名靠前/网络营销推广系统
  • 建设银行手机官方网站下载安装/企业宣传推广怎么做
  • 微信网站界面设计/手机端竞价恶意点击
  • 做直播网站需要哪些技术/企业网站建设流程
  • 在ps中网站界面应做多大/营销活动方案
  • 网站栏目模板如何选择/网站为什么要做seo
  • 泰和县网站免费建站/关键词查询工具免费
  • 硬件定制/九幺seo工具
  • 网站美工外包公司/短视频运营是做什么的
  • 深圳网站建设响应式/成人技能培训
  • 张雪峰建议取消市场营销/网站seo方案案例
  • 怎么用织梦系统建一个网站/关键词排名优化公司地址
  • 有什么网站可以自己做书/百度网盘app下载安装官方免费下载
  • 宁波网站推广平台推荐/百度收录提交申请
  • 数据网站开发/关键词排名优化易下拉软件
  • 宽屏大气网站模板/网络营销理论包括哪些
  • 建设银行官方网站诚聘英才频道/刚刚突发1惊天大事
  • 永久免费改ip地址软件/网站排名优化方法
  • 营销型的网站域名/万秀服务不错的seo推广
  • 武汉做网站seo/潍坊seo建站