面试代码基础二分法binary Search Sorted Array

Posted ldphoebe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试代码基础二分法binary Search Sorted Array相关的知识,希望对你有一定的参考价值。

二分法总结:满足某个条件的first position of。。。。  和 last position  of。。。。用二分法

 

先从二分法开始写:

 

4点:

1.start+1<end; 退出条件两个相邻了就退出

2.mid=start+(end-start)/2;//防止溢出

3.A[mid] == > <

4.最后判断相邻的两个元素和target的关系

 

找第一个出现target的位置

 

if(A.size() == 0){
    return -1;
}
int start=0;int end=A.size()-1;
while(start+1<end){
    int mid=start+(end-start)/2;
    if(target == A[mid]){
        end = mid;//find first appear
    }
    else if(target < A[mid]){
        end = mid;
    }else if(target > A[mid]){
        start=mid;
    }
}
if(target == A[start]){
    return start;
}
else if(target ==  A[end]){
    return end;
}
return -1;

Search for a range

找first pos  last pos

当target == A[mid]

start 和 end怎么挪

1 2 4 4 5

找左边界

在(target == A[mid]){

end=mid;

}

找右边界

(target == A[mid]){

start=mid;

}

 

 

寻找插入位置(无重复元素)

第一个大于等于target的下标

在第四点会发生变化~

iftargete)

 

 

 

Search a 2D matrix

行递增  列递增

思考:从左下角考虑

可以删掉一行或者一列!!!

以上是关于面试代码基础二分法binary Search Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章

不仅仅是算法--二分查找(binary search)的心路历程

数据结构05红-黑树基础----二叉搜索树(Binary Search Tree)

Codeforces Round #678 (Div. 2) C. Binary Search (二分,组合数)

二分查找(Binary Search)

二分法检索(binary search)

二分查找(Binary Search)