3.整数二分

news/2024/9/28 22:56:54 标签: java, 开发语言

在这里插入图片描述
在这里插入图片描述

模板

java">package base;

public class Bsearch {
    public int binary_search1(int l, int r){
        while (l<r){
            int mid = (l+r+1)>>1;
            if(check(mid)) l=mid;
            else r = mid-1;
        }
        return l;

    }
    public int binary_search2(int l, int r){
        while (l<r){
            int mid = (l+r)>>1;
            if (check(mid)) r = mid;
            else l=mid+1;
        }
        return l;
    }
    public boolean check(int mid){

        return false;
    }
}

例题:
在这里插入图片描述

java">package test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Test1 {
    public static void main(String[] args){
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        try{
            System.out.println("输入数组长度:");
            int n = Integer.parseInt(bf.readLine());
            //定义数组
            int a[] = new int[n];
            for(int i = 0;i<n;i++){
                System.out.println("在数组中添加第"+(i+1)+"个数据:");
                a[i] = Integer.parseInt(bf.readLine());
            }
            //定义查询个数
            System.out.println("输入要查询元素的个数:");
            int q = Integer.parseInt(bf.readLine());
            //开始查找
            while(q-->0){
                System.out.println("输入要查询元素值:");
                int x = Integer.parseInt(bf.readLine());
                binary_search(n,a,x);
            }
        }catch(IOException e){
            e.printStackTrace();
        }
    }
    /*
    n:数组长度
    a[]:数组
    x:要查询的数x
    */
    public static void binary_search(int n,int[] a,int x){
        //定义指针
        int l = 0,r = n-1;
        while(l<r){
            //确定左边界
            int mid = (l+r)>>1;
            if(a[mid]>=x) r=mid;
            else l=mid+1;
        }
        if(a[l]!=x){
            System.out.println("-1 -1");
            return;
        }
        else System.out.print(l+" ");

        //确定右边界
        l = 0;
        r = n-1;

        while(l<r){
            int mid = (l+r+1)>>1;
            if(a[mid]<=x) l = mid;
            else r=mid-1;
        }
        System.out.println(l);
    }

}


http://www.niftyadmin.cn/n/5682008.html

相关文章

【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-1

文件下载与邀请翻译者 学习英特尔开发手册&#xff0c;最好手里这个手册文件。原版是PDF文件。点击下方链接了解下载方法。 讲解下载英特尔开发手册的文章 翻译英特尔开发手册&#xff0c;会是一件耗时费力的工作。如果有愿意和我一起来做这件事的&#xff0c;那么&#xff…

windows的pycharm直接连接linux项目敲代码,我现在强的可怕,使用PyCharm Professional版的远程开发功能

使用PyCharm Professional版的远程开发功能&#xff0c;可以在本地机器上运行PyCharm的图形用户界面&#xff08;GUI&#xff09;&#xff0c;同时将代码的执行、调试等任务委托给远程服务器。这种方式不需要在服务器上安装图形界面&#xff0c;但需要一些配置来设置服务器上的…

Python实现Phong着色模型算法

目录 使用Python实现Phong着色模型算法引言Phong着色模型的基本原理1. 模型组成2. 公式 Phong着色模型的Python实现1. 向量类的实现2. 光源类的实现3. 材质类的实现4. Phong着色器类的实现 整体实现总结 使用Python实现Phong着色模型算法 引言 在计算机图形学中&#xff0c;光…

GitLab CI/CD脚本入门

工作中第一次用到gitlab自带的cicd&#xff0c; 记录一下备忘 GitLab CI/CD 配置文件 (.gitlab-ci.yml) 中有许多关键字&#xff0c;用于定义不同的行为和阶段。以下是一些常见且重要的关键字&#xff1a; 全局和 job 特定关键字 image 指定运行 CI job 时的 Docker 镜像。 im…

开源模型应用落地-qwen2.5-7b-instruct-LoRA微调-LLaMA-Factory-单机单卡-V100(十八)

一、前言 本篇文章将使用LLaMA-Factory去高效微调(命令和界面方式)QWen2.5系列模型,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 QWen2系列模型微调: 开源模型应用落地-qwen2-7b-instruct-LoRA微调-LLaMA-Factory-单机单…

C++ | Leetcode C++题解之第435题无重叠区间

题目&#xff1a; 题解&#xff1a; class Solution { public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {if (intervals.empty()) {return 0;}sort(intervals.begin(), intervals.end(), [](const auto& u, const auto& v) {retur…

Redis篇(Java操作Redis)

目录 讲解一&#xff1a;简介 讲解二&#xff1a;Jedis Github 一、创建项目、 二、添加依赖 三、配置文件 四、Java连接Redis 五、通过Redis连接池获取连接对象并操作服务器 六、封装JedisUtil对外提供连接对象获取方法 七、Java操作Redis五种数据类型 1. 连接与释放…

【机器学习】——决策树以及随机森林

文章目录 1. 决策树的基本概念与结构1.1 决策树的构建过程 2. 决策树的划分标准2.1 信息增益&#xff08;Information Gain&#xff09;2.2 信息增益比&#xff08;Information Gain Ratio&#xff09;2.3 基尼指数&#xff08;Gini Index&#xff09;2.4 均方误差&#xff08;…