算法_二分查找(java)

简介: 算法_二分查找(java)

一、二分法

理解:把答案所在的区间逐渐缩小,直到区间内只有答案

基础了解:

Array.toString() 打印数组 将数组转化为String类型的输出

sort()对数进行i排序 默认是升序

适用:寻找一个数,寻找左侧边界,寻找右侧边界

注意:

计算时为了防止数组溢出,mid=left+(right-left)来表示


二、应用:三种情况讨论

1.寻找一个数

代码如下(示例):

 int Binarysearch(int a[],int target)   
  {
    int left=0;
    int right=a.length-1;
    while(left<=right)//搜索为空的时侯终止
    {
      int mid = left+(right-left)/2;
      if(a[mid] == target) 
      {
        return mid;
      }
      if(a[mid]>target)
      {
        right = mid-1;
      }
      if(a[mid]<target) 
      {
        left = mid+1;
      }
  }
    return -1;
  }


2.寻找左侧边界

代码如下(示例):

int left_search(int a[],int target)
  {
    int left =0;
    int right = a.length;
    while(left<right)
    {
      int mid = left+(right-left)/2;
      if(a[mid]==target)
      {
        right = mid;
      }
      if(a[mid]<target)
      {
        left=mid+1;
      }
      if(a[mid]>target)
      {
        right=mid;
      }
    }
    return left;
  }


3.寻找右侧边界

int right_search(int a[],int target)
  {
    int left =0;
    int right = a.length;
    while(left<right)
    {
      int mid = left+(right-left)/2;
      if(a[mid]==target)
      {
        left = mid+1;
      }
      if(a[mid]<target)
      {
        left=mid+1;
      }
      if(a[mid]>target)
      {
        right=mid-1;
      }
    }
    return left-1;
  }


相关文章
|
1天前
|
Java
java实现二分查找
java实现二分查找
18 0
|
1天前
|
算法 安全 Java
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
【4月更文挑战第28天】性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
32 1
性能工具之 JMeter 自定义 Java Sampler 支持国密 SM2 算法
|
1天前
|
搜索推荐 算法 Java
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
【5月更文挑战第4天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
10 0
滚雪球学Java(29):数组长度和排序算法:让你的程序更高效
|
1天前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
1天前
|
搜索推荐 算法 Java
Java实现的常用八种排序算法
提到数据结构与算法,无法避免的一点就包含排序,熟练的掌握各种排序算法则是一个程序员必备的素质之一,除此之外,排序算法也是当下各大技术公司比较喜欢问的技术点,所以,就这一点JavaBuild整理了常见的8种排序算法
12 0
|
1天前
|
机器学习/深度学习 数据采集 算法
使用 Java 实现机器学习算法
【4月更文挑战第19天】Java在数据驱动时代为机器学习提供支持,具备丰富的数学和数据结构库,适用于实现线性回归、决策树、SVM和随机森林等算法。实现时注意数据预处理、模型选择、评估指标和可视化。利用Java的库和编程能力可构建高效模型,但需按问题需求选择合适技术和优化方法。
|
1天前
|
算法 测试技术 Serverless
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
【二分查找】【C++算法】378. 有序矩阵中第 K 小的元素
|
1天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出&quot;验证成功&quot;,否则输出&quot;验证失败&quot;。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
1天前
|
搜索推荐 Java
Java排序算法
Java排序算法
20 0

热门文章

最新文章