A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

二分查找算法是在有序数组中用到的较为频繁的一种算法,譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:
    1.第一步查找中间元素,即5,由于5<6,则6必然在5之后的数组元素中,那么就在{6, 7, 8, 9}中查找,
    2.寻找{6, 7, 8, 9}的中位数,为7,7>6,则6应该在7左边的数组元素中,那么只剩下6,即找到了。
  1. class  IndexSearch{
  2.         public static void main(String[] args) {

  3.                 int[] arr = {1,2,3,4,5,6,7,8,9};
  4.                 int key = 9;

  5.                 int index = binarySearch(arr,key);

  6.                 System.out.println(key+"在数组中的索引值为:"+index);
  7.         }

  8.                 //演示二分查找法,对于有序数组
  9.         public static int binarySearch(int[] arr,int key){
  10.                 //需要定义三个变量,用于记录住角标的变化。
  11.                 int min,max,mid;
  12.                 min = 0;
  13.                 max = arr.length-1;
  14.                 //只要min和max之间有距离,就有了折半的可能,而且有可能折半多次,使用while循环。。
  15.                 while(min<=max){
  16.                 //获取中间角标。
  17.                 mid = (max+min)/2;    //mid = (max+min)>>1;
  18.                 //获取中间角标上的元素和key进行比较。
  19.                 //来确定min和max的新值。或者叫做,确定新的查找范围。
  20.                 if(key>arr[mid])
  21.                         min = mid + 1;
  22.                 else if(key<arr[mid])
  23.                         max = mid - 1;
  24.                 else
  25.                         return mid;
  26.                 }
  27.                 return -1;
  28.         }
  29. }
复制代码



2 个回复

倒序浏览
我还没学。。看看
回复 使用道具 举报
   分析的很细,注释明了。学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马