黑马程序员技术交流社区

标题: 二分查找的原理: 希望嫩个帮到大家 [打印本页]

作者: 陈熙    时间: 2015-8-14 22:06
标题: 二分查找的原理: 希望嫩个帮到大家
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 ;
        }

}





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2