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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class  HalfSearch
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 //折半查找
  6.                 int arr[]={5,1,6,4,2,8,9};
  7.                 int index=halfSearch(arr,2);
  8.                 System.out.println("2所在位置下角标为:"+index);
  9.         }

  10.             //折半查找,效率高,但是必须保证数组为有序数组
  11.                 public static int halfSearch(int[] arr,int key)
  12.             {
  13.                         //int min=0,max=arr.length-1,mid=(max+min)/2;

  14.                         int min,max,mid;

  15.                         min=0;
  16.                         max=arr.length-1;
  17.                         mid=(max+min)/2;

  18.                         while(arr[mid]!=key)
  19.                         {
  20.                                 if(key>arr[mid])
  21.                                         min=mid+1;
  22.                                 else if(key<arr[mid])
  23.                                         max=mid-1;

  24.                                 if(min>max)
  25.                                         return -1;
  26.                                 mid=(mid+max)/2;
  27.                         }
  28.                         return mid;

  29.                 }
  30. }
复制代码

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
zzkang0206 + 1 什么是折半查找?
菜小徐 + 1

查看全部评分

4 个回复

倒序浏览
数组是拷贝过来的,忘了该数组了。。。。。。:L
回复 使用道具 举报
折半查找只适合于有序的数组!
回复 使用道具 举报
Arrays.sort(arr);   加上这一句  对数组进行升序排列。。
回复 使用道具 举报 1 0
要用sort方法对原数组进行排序啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马