二分查找法

597 阅读1分钟

二分查找发

查找步骤

  • 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束
  • 如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较
  • 如果在某一步骤数组为空,则代表找不到
  • 这种搜索算法每一次比较都使搜索范围缩小一半
void binary(int arr[], int data){
    int min = 0,max = arr.length-1;
    int mid;
    while(min <= max){
        mid = min + (max-min)/2;
        if(arr[mid] > data){
            max = mid-1;
        }else if(arr[mid] < data){
            min = mid+1;
        }else{
            return mid;
        }
    }
    return -1;
}

位运算写法

void binary(int arr[], int data){
    int min = 0,max = arr.length-1;
    int mid;
    while(min <= max){
        mid = min + ((max-min)>>>1);
        if(arr[mid] > data){
            max = mid-1;
        }else if(arr[mid] < data){
            min = mid+1;
        }else{
            return mid;
        }
    }
    return -1;
}