您的位置:首页 > 其它

二分法查找

2015-07-23 16:03 323 查看
int bin(int *array, int low, int high, int key)//二分法查找
{
while(low <= high)
{
int mid = (low + high) / 2;
if (key == array[mid])//中间切一刀,正好和要查找的数相等
return mid;
else if (key > array[mid])//如果要找的数大于array[mid],那么就在下半部分继续切刀
low = mid + 1;
else//如果要找的数小于array[mid],那么就在上半部分继续切刀
high = mid - 1;

}
return -1;//没有找到数据
}

int bin_rec(int *array, int low, int high, int key)//递归实现二分法查找
{
    if (low <= high)//递归终止条件
    {
        int mid = (low + high) / 2;
        if (key == array[mid])
            return mid;
        else if (key > array[mid])
            return bin_rec(array, mid +1, high, key);//在下半部分查找
        else
            return bin_rec(array, low, mid - 1, key);//在上半部分查找
    }else
        return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: