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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class BinarySearchDemo {
       
        public static void main(String[] args) {
               
                // 定义一个有序数组
                int[] arr = {11, 22 , 33 , 44,55, 66, 77, 88, 99};
                int index = binarySearch2(arr , 33);
                System.out.println(index);
        }
       
        /**
         * 优化后的代码
         * @param arr
         * @param value
         * @return
         */
        public static int binarySearch2(int[] arr , int value){
               
                // 定义三个变量
                int minIndex = 0 ;
                int maxIndex = arr.length - 1;
               
                // 循环
                while(minIndex <= maxIndex){
                       
                        int midIndex = (minIndex + maxIndex) >> 1 ;
                       
                        if(arr[midIndex] == value){
                                return midIndex ;
                        }else if(arr[midIndex] > value){
                                maxIndex = midIndex - 1 ;
                        }else if(arr[midIndex] < value){
                                minIndex = midIndex + 1 ;
                        }
                }
               
                return -1 ;
               
        }
       
        /**
         * 二分查找
         * @param arr
         * @param value
         * @return
         */
        public static int binarySearch(int[] arr , int value){
               
                // 定义三个变量
                int minIndex = 0 ;
                int maxIndex = arr.length - 1;
                int midIndex = (minIndex + maxIndex) / 2 ;
               
                // 循环
                while(minIndex <= maxIndex){
                       
                        if(arr[midIndex] == value){
                                return midIndex ;
                        }else if(arr[midIndex] > value){
                                maxIndex = midIndex - 1 ;
                        }else if(arr[midIndex] < value){
                                minIndex = midIndex + 1 ;
                        }
                       
                        midIndex = (minIndex + maxIndex) / 2 ;
                }
               
                return -1 ;
        }

}

0 个回复

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