二分查找的两种(找到val,找到第一val)

来源:互联网 发布:蝎子网络第一季百度云 编辑:程序博客网 时间:2024/05/22 12:49

对{1,2,3,3,3,3,3,4,5},找到3和找到在数组里面出现的第一个3,思路略有不同

找到3:

int binary_search_my(int* a,int n,int val){int start=0;int end=n-1;while(start<=end){            int mid=(start+end)>>1;            if(a[mid]==val) return mid;            else if(a[mid]>val) end=mid-1;            else if(a[mid]<val) start=mid+1;}return -1;}
找到第一个3:
int find_first(int *a,int n,int val){    int start=0;    int end=n-1;    while(start<=end)    {        if(end-start==1)        {            if(a[start]==val) return start;            else if(a[end]==val) return end;            else    return -1;        }        int mid=(start+end)>>1;        if(a[mid]>=val) end=mid;        else if(a[mid]<val) start=mid;    }}


0 0
原创粉丝点击