1.给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引
    如果目标值不在数组中,返回它将会被按顺序插入的位置索引。
    思路:
    如果值不存在,我们就不会查找到该值所对应的索引,在极端条件下,
    当left == right时,如果该位置下的值 还不是 我们的目标值的话,
    如果该位置下的值 比 目标值小,left++,说明,目标值应该在此时left所指向的位置。
    如果该位置下的值 比 目标值大,right—,说明,目标值在此时所对应的left所指向的位置。
    例:
    1 3 5 7 9 11
    0 1 2 3 4 5
    我们的目标值 是 8
    当left == right == middle== 3时,此时arr[3] = 7
    和我们的目标值进行比较,arr[3] < 8
    left = middle+1 即left = 4.
    此时left 正好是我们目标值val 应该插入的位置

    若我们的目标值为4
    当left == right ==middle==2时,此时arr[2] = 5
    和我们的目标值进行比较,arr[2] = 5 > 4
    right = middle -1 即right=1
    但此时,left正好是我们目标值val应该插入的位置

    */
    public class MiddleFind2 {
    public static int Find(int arr[],int val){
    int left = 0;
    int right = arr.length-1;
    while(left <= right){
    int middle = (right-left >>1) + left;
    if (arr[middle] >val){
    right = middle - 1;
    }else if (arr[middle] < val){
    left = middle + 1;
    }else if (arr[middle] == val){
    return middle;
    }
    }
    return left;
    }
    public static void main(String[] args) {
    int arr[] = new int[]{1,3,5,7,9,11};
    System.out.println(Find(arr, 3));
    }
    }