当前位置: 首页 > 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/news/233773.html

相关文章:

  • 二维火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)
  • vim常用命令以及配置文件
  • 物联网中基于WIFI的室内温度检测系统设计
  • Blender 的重拓扑功能中的参数,
  • c++中的模板(1) -- 什么是模板
  • Kotlin和Java 单例模式
  • 【Linux】Shell编程
  • 【ASP.NET Core 基础知识】--部署和维护--日志记录和错误处理
  • C++中类的6个默认成员函数【构造函数】 【析构函数】
  • Java串口通信技术探究3:RXTX库线程 优化系统性能的SerialPortEventListener类
  • k8s-常用工作负载控制器(更高级管理Pod)