查找元素:
题目:给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
1.顺序查找

int search(int* nums, int numsSize, int target){
    int n=100;
    for(int i=0;i<n;i++)
    {
        if(nums[i] == target) {
            return i;
        }
    }
    return -1;
}

2.二分法查找
前提:1.数组必须是升序;2.数组中无重复元素。
二分法查找中逻辑是比较简单,但是区间定义问题不好解决,区间的定义就是不变量。要在二分查找的过程中,保持不变量,就是在while寻找中每一次边界的处理都要坚持根据区间的定义来操作。
写二分法,区间的定义一般为两种,左闭右闭即[left, right],或者左闭右开即[left, right)。
第一种写法,我们定义 target 是在一个在左闭右闭的区间里,也就是[left, right]。
因为定义target在[left, right]区间,所以有如下两点:
1.while (left <= right) 要使用 <=
2.if (nums[middle] > target) right 要赋值为 middle - 1,因为当前这个nums[middle]一定不是target,那么接下来要查找的左区间结束下标位置就是 middle - 1;
具体代码如下:

int search(int* nums, int numsSize, int target){
    int low=0,mid;
    int high=numsSize-1;
    while(low<=high){
        mid=(high+low)/2;
        if(nums[mid] == target){
            return mid;
        }else if(nums[mid] < target){
            low=mid+1;
        }else{
            high=mid-1;
        }
    }
    return -1;
}

第二种写法我也有点蒙,有大佬帮忙解决一下吗?