关闭

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

258人阅读 评论(0) 收藏 举报
分类:

对{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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33680次
    • 积分:816
    • 等级:
    • 排名:千里之外
    • 原创:45篇
    • 转载:28篇
    • 译文:0篇
    • 评论:3条