二分查找法

 

 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

1.在一个有序的数组里(一般是从小到大排序)查找所在值的位置,并返回其所在的下标;如果数组中没有此数显示-1。

2.一组混乱排序的数组可以通过Arrays.toString(数组名)来排序。

3.当首尾相加超出int范围时 可以转化等式middle=(begin+end)/2为 middle= begin+(end-begin)/2;

实例:

 1  public static void main(String[] args) {
 2     int[]arr=new int []{1,2,3,4,5,6};
 3     Scanner scanner=new Scanner(System.in);
 4     System.out.println("输入要查找的数:");
 5      int key=scanner.nextInt();
 6         int a= binarySearch(arr,key);
 7         System.out.println(a);
 8     }
 9     public static int binarySearch(int[]arr,int key ){
10         int end=arr.length-1;int begin=0;
11      while (begin<=end){
12          int middle=(begin+end)/2;  // int middle=begin+(end-begin)/2; 防止首尾相加越界

13 if(key==arr[middle]){
14               return middle;
15         }else if(key<arr[middle]){
16              end=middle-1;
17           }else {
18              begin=middle+1;
19           }
20         }
21         return -1;
22     }

 

posted @ 2019-04-01 10:54  杰哥!  阅读(220)  评论(0编辑  收藏  举报
/*scroll to top 火箭按钮*/