二分查找的两种实现方法

      广州疯狂软件学院拥有三大课程体系包括: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人才,让你成为备受企业青睐的人才。

原文地址:https://www.cnblogs.com/gojava/p/3514992.html