二分查找的实现(java版本)

一、二分法查找的定义

  依次将所查找数据与中心数据对比,根据大小调整数据边界
二、二分查找的条件

  数组必须排序
三、二分查找的原理

  

四、二分法查找的代码

/*
 * 从数组当中找到4所在的索引:
 *         {2,4,6,7,43,57,90,101}
 */
public class Demo3 {

    public static void main(String[] args) {
            
        int[] arr = {2,4,6,7,43,57,90,101};
        int number = 10;
        System.out.(method(arr, number));
        

    }
    
    public static int method(int[] arr,int number){
        
        int start = 0; //定义变量,记录最小的索引
        int end = arr.length-1; //定义变量,记录最大的索引
        int mid = (start+end)/2; //定义变量,记录中间的索引
        
        while(arr[mid]!=number) {  //只要查找的数不等于数组中间的数,就继续查找,如果中间的数等于查找的数,则mid就是要求的索引
            
            if(number<arr[mid]) {  //如果这个数比数组中间的数小,则让最大的索引=mid-1
                end = mid-1;
            }else if(number>arr[mid]) {  //如果这个数比数组中间的数大,则让最小的所用=mid+1
                start = mid+1;
            }
            
            if(start>end) {    //如果出现最小索引大于最大索引的情况,说明数组中不存在这样的元素
                return -1;
            }
            
            mid = (start+end)/2;  //每次循环后,因为首尾的索引变化了,所以中间的索引也需要变化
        }
        
        return mid;  //如果数组中有这个元素,则返回
    }
    

}
View Code

 

posted @ 2017-09-17 15:21  AI菌  阅读(411)  评论(0编辑  收藏  举报