java 算法二分查找和折半查找

 更新时间:2017年05月19日 17:02:39   投稿:lqh  
这篇文章主要介绍了java 算法二分查找与折半查找的相关资料,需要的朋友可以参考下

 java 算法二分查找与折半查找

折半查找 :首先数组是已经排好序的

实例代码:

package com.hao.myrxjava;

/**
 * 折半查找 :首先数组是已经排好序的
 *
 * @author zhanghaohao
 * @date 2017/5/15
 */

public class HalfDivision {

  /**
   * 循环实现
   *
   * @param array 排好序的数组
   * @param value 查找的值
   * @return value在array的位置
   */
  public static int halfDivision(int value, int[] array) {
    if (array == null || array.length == 0)
      throw new NullPointerException("array is null");
    int low = 0;
    int high = array.length - 1;
    int mid = (low+high)/2;
    while (array[mid] != value) {
      if (array[mid] > value)
        high = mid - 1;
      else
        low = mid + 1;
      if (low > high)
        return -1;
      mid = (low+high)/2;
      if (array[mid] == value)
        return mid;
    }
    return mid;
  }

  /**
   * 递归实现
   *
   * @param array 排好序的数组
   * @param value 查找的值
   * @param low 查找的起始位置
   * @param high 查找的末尾位置
   * @return value在array的位置
   */
  public static int halfDivision(int value, int[] array, int low, int high) {
    if (low > high)
      return -1;
    int mid = (low + high) / 2;
    if (array[mid] == value)
      return mid;
    else if (array[mid] > value)
      return halfDivision(value, array, low, mid - 1);
    else if (array[mid] < value)
      return halfDivision(value, array, mid+1, high);
    return -1;
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • 详解Java的内存模型

    详解Java的内存模型

    本文更准确的说法应该是JVM的内存模型,但是这里又牵扯了一些其他的前置知识,主要是想从Java入手,从源头上梳理一遍整个Java底层运行的机制,中间会额外补充一些和题目无关的前置基础,导致主讲内存模型的篇幅所占的比例就不是那么绝对。
    2021-06-06
  • java实现简单TCP聊天程序

    java实现简单TCP聊天程序

    这篇文章主要为大家详细介绍了java实现简单TCP聊天程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Java编程线程同步工具Exchanger的使用实例解析

    Java编程线程同步工具Exchanger的使用实例解析

    这篇文章主要介绍了Java编程线程同步工具Exchanger的使用实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Java的Cglib动态代理实现方式详解

    Java的Cglib动态代理实现方式详解

    这篇文章主要介绍了Java的Cglib动态代理实现方式详解,CGLIB是强大的、高性能的代码生成库,被广泛应用于AOP框架,它底层使用ASM来操作字节码生成新的类,为对象引入间接级别,以控制对象的访问,需要的朋友可以参考下
    2023-11-11
  • Maven插件构建Docker镜像的实现步骤

    Maven插件构建Docker镜像的实现步骤

    这篇文章主要介绍了Maven插件构建Docker镜像的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Zookeeper全局唯一ID生成方案解析

    Zookeeper全局唯一ID生成方案解析

    这篇文章主要介绍了Zookeeper全局唯一ID生成方案解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • fastjson 使用方法详细介绍

    fastjson 使用方法详细介绍

    Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发。接下来通过本文给大家分享fastjson 使用方法详细介绍,感兴趣的朋友一起看看吧
    2017-11-11
  • SpringBoot解决BigDecimal传到前端后精度丢失问题

    SpringBoot解决BigDecimal传到前端后精度丢失问题

    这篇文章将通过示例详细为大家介绍SpringBoot如何解决BigDecimal传到前端后精度丢失问题,文中的示例代码讲解详细,感兴趣的可以了解一下
    2022-06-06
  • Java 动态代理与CGLIB详细介绍

    Java 动态代理与CGLIB详细介绍

    这篇文章主要介绍了 Java 动态代理与CGLIB详细介绍的相关资料,需要的朋友可以参考下
    2017-02-02
  • ElasticSearch突然采集不到日志问题解决分析

    ElasticSearch突然采集不到日志问题解决分析

    这篇文章主要为大家介绍了ElasticSearch突然采集不到日志问题解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04

最新评论