《C语言入门100例》(第30题)二分查找

今天题目不难,有很多种方法查找,最简单的当然是遍历数组,如下:

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

然后用今天讲的二分查找做一遍:

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

以上。

猜你喜欢

转载自blog.csdn.net/weixin_48989391/article/details/121657810