zoukankan      html  css  js  c++  java
  • 二分查找的两种实现方法

          广州疯狂软件学院拥有三大课程体系包括:java课程,android课程,ios课程,疯狂软件年终钜惠,报名java就业班,免费赠送基础班,名额有限,本月火热报名中,欢迎有志之士电话或者QQ咨询。

      二分查找又名折半查找法,实现思路可以到网上找到,在此就不在说了。二分查找有两种实现方法,一种方法是:使用循环遍历,结束条件是:low > high;另一种方法是:使用递归,结束条件也是:low > high。代码如下:

      Java代码 收藏代码

      public class BinarySearchTest {

      public static void main(String[] args) {

      int arr[] = new int[10];

      int data = -1;

      for (int i = 1; i <= 10;i++) {

      arr[i - 1] = i;

      }

      SortUtil.showArr(arr);

      System.out.println(binarySearch(arr,data));

      System.out.println(binarySearch(arr,0,arr.length - 1,data));

      }

      /**

      * 循环实现

      * @param arr

      * @param data

      * @return

      */

      public static int binarySearch(int[] arr ,int data){

      int low = 0,high = arr.length - 1,index = -1;

      while (low <= high) {

      int mid = (low + high)/2;

      if (arr[mid] == data) {

      index = mid;

      break;

      } else if (arr[mid] > data) {

      high = mid - 1;

      } else if (arr[mid] < data) {

      low = mid + 1;

      }

      }

      return index;

      }

      /**

      * 递归实现

      * @param arr

      * @param data

      * @return

      */

      public static int binarySearch(int[] arr,int low,int high,int data) {

      int mid = (low + high)/2;

      if (arr[mid] == data) {

      return mid;

      } else if (low <= high && arr[mid] > data) {

      return binarySearch(arr,low,mid - 1,data);

      } else if (low <= high && arr[mid] < data) {

      return binarySearch(arr,mid + 1,high,data);

      } else {

      return -1;

      }

      }

      }

      使用到的工具类:SortUtil 代码如下:

      Java代码 收藏代码

      public final class SortUtil {

      private SortUtil(){};

      public static void showArr(int[] arr) {

      for (int i : arr) {

      System.out.print(i);

      System.out.print(' ');

      }

      System.out.println();

      }

      }

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。技术知识沉淀深厚的老师,让你感受Java的魅力,激发你对于编程的热爱,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,成为真正的技术高手;通过大量全真企业项目疯狂训练,迅速积累项目经验。让你成为技能型的现代化高端人才,迅速获得高薪就业!时间不等人,赶紧联系我们吧!疯狂java培训中心地址:广州天河区车陂沣宏大厦3楼。

      疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。疯狂软件开设了java课程,ios课程,android课程,为你提供一个学习java技能的好机会,疯狂软件特大优惠活动,加疯狂软件微信号(疯狂软件),抢优惠,优惠100元+赠送iOS教材一本 详情请看疯狂java培训官网。IT从业着仍是社会所需要的高端人才,广州疯狂软件之力于培养企业所需要的中高端IT人才,让你成为备受企业青睐的人才。

  • 相关阅读:
    CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成
    【beta】Scrum站立会议第5次....11.7
    【beta】Scrum站立会议第3次....11.6
    补交进度条
    【beta】Scrum站立会议第1次....11.3
    【week7】psp
    【week6】psp
    【week6】约跑App视频链接
    【week6】团队贡献分
    【week6】用户数
  • 原文地址:https://www.cnblogs.com/gojava/p/3514992.html
Copyright © 2011-2022 走看看