您的位置:首页 > 其它

二分搜索

2017-03-20 23:36 141 查看
二分搜索:将一个排好序的数组,不断地分成两半,然后在可能包含我们所要查找的值的那一部分搜索。
要求数组必修是排序好的
假如数组有两个及两个以上的数字,那么二分算法将不能确定该返回那个值。

int find(int num,int a[],int len)//num将要搜索的值  a[]要查找的值  函数的返回的是找到的元素的下标
{
    int min = 0, max = len-1;
    while (min<=max)
    {
        int zhong = (min+max)/2;
        if (a[zhong]== num)
        {
            return zhong;
        }
        else if (a[zhong]<num)
        {
            min = zhong + 1;
        }
        else
        {
            max = zhong -1;
        }
    }
    return len;//没找到 返回数组的长度
}  

int find(int num, int a[], int min,int max)//num将要搜索的值  a[]要查找的值  函数的返回的是找到的元素的下标
{
    if(min>max)
    {
        return max;
    }
    int zhong = (min + max) / 2;

    if (a[zhong] == num)
    {
        return zhong;
    }
    else if (a[zhong]<num)
    {
        min = zhong + 1;
        find(num,a, min,max);
    }
    else
    {
        max = zhong - 1;
        find(num, a, min, max);
    }
}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: