leetcode上一道简单题,不知道自己错在哪里,请帮我指出一下

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。

 

    int a = numsSize/2;
    if(target < nums[0]){
        return 0;
    }else if(target > nums[numsSize-1]){
        return numsSize;
    } 
    while(nums[a] != target && a != numsSize && a!= 0){
        if(nums[a-1] < target && nums[a+1] > target){
            if(nums[a] > target){
                return a;
            }else if(nums[a]<target){
                return a+1;
            }
        }
        else if(nums[a] > target){
            a /= 2;
        }else if(nums[a] < target){
            a = (numsSize+a)/2;
        }
    }
    
    return a;
    
}




你只需要使用一个for循环进行查找就行了。没必要这么复杂啊。
如果找到比数值大的就直接返回当前索引。若整个数组都没有找到。则返回数组长度

题主的意思就是要使用二分查找,建议题主先熟悉一下二分查找的原理
建议看这篇中的两种实现方式中的非递归(循环):
https://blog.csdn.net/luoweifu/article/details/16656737