二分查找

定义

二分查找是一种在有序数组中查找某一特定元素的搜索演算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。

Java实现

/*
 * 查找数组array中值为number的数的位置
 */
public int search(int [] array,int number){
    int result = -1;
    if(array == null){
        return result;
    }
    int length = array.length;
    
    int left = 0;//左指针
    int right = length-1;//右指针
    
    while(left <= right){
        int index = left +((right-left)>>1);//获取左右指针中间的位置,括号不能省略
        if(array[index] == number){
            result = index;
            break;
        }else if(array[index] > number){
            right = index-1;
        }else{
            left = index+1;
        }
    }
    
    return result;
}

你可能感兴趣的:(二分查找)