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

© 果蝇 中级黑马   /  2015-9-9 23:09  /  365 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

import java.util.Arrays;

/*
        A:画图演示
                二分查找  
                       
                        {11,22,33,44,55,66,77}  --> 找 22
        B: 思想:        每一次都查中间的那个元素,比较大或者小就能减少一般的元素
*/

public class ArraysDemo3 {
        public static void main(String[] args) {
                //定义数组
                int[] arr = {11,22,66,33,44,55,66,77,88};
                int target  =78;
               
               
                 //int index =  queryByHalf(arr, target);
                int index = Arrays.binarySearch(arr, target);
               
                ArraysTool.printArr(arr);
                Arrays.sort(arr);
                ArraysTool.printArr(arr);
               
                // System.out.println("您查找的元素的角标为:" + index);
       
        }

        private static int queryByHalf(int[] arr, int target) {
                //定义角标
                int start = 0; //初始位置
                int end = arr.length-1; //末尾位置
                int index = -1;
                //循环比较
                while (start <= end) {
                        int mid = (start + end) /2;
                       
                        // 比较
                        if (arr[mid] >  target){
                                end = mid-1;
                               
                        }else if(arr[mid] < target){
                                start = mid+1;
                        }else{
                               
                                System.out.println("找到了");
                                index = mid;
                                return index;
                        }
                }
                return index;
        }
}

您需要登录后才可以回帖 登录 | 加入黑马