首页 > 编程语言 >二分查找算法---java----黑马程序员算法

二分查找算法---java----黑马程序员算法

时间:2023-12-30 14:55:57浏览次数:39  
标签:java target int System ---- 算法 查找 println out

1.二分查找算法

给定的条件:给定的有序数组A查找目标值为target,其中A标记为

 数组序号从0开始,其下标最大为数组长度-1.

举例数组:5   14   22  30  31   41  44

条件:i>j   i表示左边下标     j表示右边下标     i从5开始      j  从44开始

思想:每次计算其中间下标的值和target值进行对比,分为以下三种情况

middle=(i+j)>>>2      表示右边移一位

target<a[middle]     j=m-1

a[middle]<target     i=m+1

target=a[middle]     结束查找找到了

 

public class Main {
    public static void main(String[] args) {
        int[] a = {5,14,22,30,31,41,44};
        System.out.println(binarySearchBasic(a,5));
        System.out.println(binarySearchBasic(a,44));
    
        int i=0;
        int j= Integer.MAX_VALUE-1;//求出最大下标
        System.out.println("索引值:i="+i);
        System.out.println("索引值:j="+j);
        int m = (i+j)/2;
        System.out.println("索引值:(m+j)/2="+(m+j)/2);
    }
    //实现二分查找
    public static int binarySearchBasic(int[] a,int target){
        //二分查找基础版本  a待查找的有序数组  target目标值
        //找得到返回索引   找不到返回-1
        int left = 0;
        int right = a.length-1;
        while(left<=right){
         int middle = (left+right)/2;
            if(a[middle]<target){
                left = middle+1;
            }else if(target<a[middle]){
                right = middle-1;
            }else{
                return middle;
            }
        }
        return -1;//没有找到返回为-1
    }
}

 

标签:java,target,int,System,----,算法,查找,println,out
From: https://www.cnblogs.com/hellotoworld/p/17936041.html

相关文章

  • word文档删除空白页
    记住一个快捷键CTRL+Backspace鼠标箭头放在空白的页面按住键盘上的快捷键就可以成功删除了不要天天看营销号设置什么磅值,全选删除啥的效果如下......
  • 为了降低个人股票投资者的决策误判概率,我们做了一款软件
    对于个人股票投资者而言,避免投资决策误判是最重要且最首要的,盈利多少都是次要的。这是一个什么样的软件?这是一个面向个人股票投资者的决策辅助工具【棱镜】,它旨在将你的分析决策逻辑转化为由文字和框架转化为算法,让计算机和算法辅助你共同决策,降低决策误判概率。网站:prismray......
  • 05 AXI4总线axi-full-master
    软件版本:vitis2021.1(vivado2021.1)操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录"米联客"FPGA社区-www.uisrc.com视频课程、答疑解惑!1概述使用XILINX的软件工具VIVADO以及XILINX的7代以上的FPGA或者SOC掌握AXI-4总线结束,并且可以灵活使用AXI-4总线技......
  • 2023.12.30做题纪要
    SAM模板评价:逆天纸糊串,学不会一点。#include<bits/stdc++.h>constintMAXN=3e6+100;intN;charch[MAXN];longlonganswer;classSuffix_Automaton{private:inttot,last,root;intchild[MAXN][26],link[MAXN],length[MAXN];longlongcnt......
  • 柱哥传奇
    柱哥不大,创造神话:不是AK打不起,而是睡觉更有性价比。让他维护前驱后继,他能写出WBLT。给他一个水池,他能跳回家里。给他一个鱼二,他能进入阶段二。就连Reliauk都曾评价到:面对柱哥,我要讲的CF3300,就是个shaber。而五星上将麦克阿瑟都说过:当我在IOI考场看到在赛时调整的柱......
  • 【Python数据分析课程设计】大数据分析—科学家薪资分析
    一、选题背景介绍及选题意义本研究旨在探究影响数据科学家薪酬的因素,通过分析相关数据集来寻找这些因素与工资之间的关系。随着数据科学职业的不断发展,对于雇主和雇员来说,了解可能影响薪酬的因素非常重要。本分析将探讨各种因素,包括个人背景、工作经验、技能、地理位置等,以及这些......
  • 37. 解数独(难)
    目录题目题解:回溯题目编写一个程序,通过填充空格来解决数独问题。数独的解法需遵循如下规则:数字1-9在每一行只能出现一次。数字1-9在每一列只能出现一次。数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用'.......
  • 关于python3多线程和协程
    以下内容部分由chatgpt生成,本文仅作为备忘和记录。asyncio.sleep和time.sleep都是用于在Python中进行延迟操作的函数,但它们的工作方式和使用场景有一些不同。asyncio.sleep:asyncio.sleep是用于在异步代码中进行暂停的函数,它是asyncio模块中的一部分。在异步程序中......
  • Hack The Box - DevVortex
    HackTheBox-DevVortex尝试使用windows系统去做HTBnmap-Pn-A-p--T410.10.11.242Nmapscanreportfor10.10.11.242Hostisup(0.63slatency).Notshown:65533closedtcpports(reset)PORTSTATESERVICEVERSION22/tcpopensshOpenSSH8.2p1Ubunt......
  • 哪些情况可以出现panic错误
    一、数组下标越界(运行时错误,对于静态类型语言,数组下标越界是致命错误)packagemainimport"fmt"funcmain(){vars[]stringfmt.Println(s)fmt.Println(s[0])}二、空指针引用(访问未初始化的指针或nil指针)直接引用空指针结构体的字段会引发panic,但调用......