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

二分查找的应用

递增序列的查找
补充:return -1的解释

#include <iostream>
using namespace std;
int s[1000];
int search(int str[],int left,int right,int num){
    while(left<=right){//要不断循环查找-while:既可判断,又可循环
        int mid=(left+right)/2;
        if(num==str[mid])
        return mid;
        else if(num<str[mid])
        right=mid-1;//在左边找
        else left=mid+1;//在右边找
    }
     return -1;//非法区间
}
int main(){
    int n,num;
    cin>>n>>num;
    for(int i=0;i<n;i++)
    cin>>s[i];
    cout<<search(s,0,n-1,num)<<endl;
    return 0;
}

同理递减序列的查找

#include <iostream>
using namespace std;
int s[1000];
int search(int str[],int left,int right,int num){
    while(left<=right){//要不断循环查找-while:既可判断,又可循环
        int mid=left+(right-left)/2;//等同(left+right)/2,可避免因left与right过大而溢出的问题
        if(num==str[mid])
        return mid;
        else if(num<str[mid])
        left=mid+1;//在右边找
        else right=mid-1;//在左边找
    }
     return -1;//非法区间
}
int main(){
    int n,num;
    cin>>n>>num;
    for(int i=0;i<n;i++)
    cin>>s[i];
    cout<<search(s,0,n-1,num)<<endl;
    return 0;
}

如何计算根号数的近似值

#include <cstdio>
#include<cmath>//sqrt
using namespace std;
const double eps=1e-5;
double Func(double n){//求平方的函数,求平方根
    return n*n;
}
double index(double left,double right){//区间
    double mid=0.0;
    while(left-right>eps){
        mid=(left+right)/2.0;
        if(Func(mid)>right)//以mid为准,近似数在左端
        right=mid;
        else left=mid;
    }
    return mid;//相当于left与right
}
int main(){
    double l,r;
    scanf("%lf%lf",&l,&r);
    double y=index(l,r);
    printf("%.6lf",y);
    return 0;
}

http://www.kler.cn/a/233773.html

相关文章:

  • react的创建与书写
  • 计算机毕业设计必看必学35755flask旅游景区热度可视化平台原创定制程序,java、PHP、python、小程序、文案全套、毕设成品等
  • SpringSecurity源码中核心类
  • Python标准库模块的使用:math、datetime
  • #渗透测试#SRC漏洞挖掘#云技术基础02之容器与云
  • 运行WHTools批量启动游戏房间工具提示要安装.Net Framework3.5解决
  • 二维火API连接,实现无代码开发广告推广与用户运营集成
  • thinkphp数据批量提交(群发消息)
  • 烟火可禁却难禁,灵境难及终将及
  • 17、ELK
  • 785. 快速排序
  • 【数据分享】1929-2023年全球站点的逐日平均风速数据(Shp\Excel\免费获取)
  • Spring Boot 自定义指标
  • Matplotlib交互
  • Linux运行级别 | 管理Linux服务
  • Springboot集成rabbitmq
  • linux系统非关系型数据库memcached
  • 【SpringBoot】Redis集中管理Session和自定义用户参数解决登录状态及校验问题
  • spring boot学习第十二篇:mybatis框架中调用存储过程控制事务性
  • 六、滚动条操作——调整图像亮度
  • 《Docker极简教程》--Docker环境的搭建--在Linux上搭建Docker环境
  • 架设游戏服务器租用价格?腾讯云和阿里云价格对比
  • 跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备
  • 小程序配置服务器域名流程指南
  • 机器学习2---逻辑回归(基础准备)
  • 新概念英语第二册(62)