c-二分查找

2021-11-27 424 0

二分查找作为一个基本的算法,在各种应用和考题中都有用到,其中有两种方式来实现,递归和循环,在适当的条件下选择不同的方式。其实在网上也找得很多关于算法的这种代码,之所以选择推送是希望大家包括我自己能够利用碎片化的时间进行学习,慢慢的积累自身的知识,以期望最终达到质变的过程。

递归方法

int BinSearch(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 BinSearch(Array,low,mid-1,key);
        else if(key>Array[mid])
            return BinSearch(Array,mid+1,high,key);
    }
    else
        return -1;
}

非递归方法

int BinSearch(int Array[],int SizeOfArray,int key/*要找的值*/)
{
    int low=0,high=SizeOfArray-1;
    int mid;
    while (low<=high)
    {
        mid = (low+high)/2;
        if(key==Array[mid])
            return mid;
        if(key<Array[mid])
            high=mid-1;
        if(key>Array[mid])
            low=mid+1;
    }
    return -1;
}  

相关文章

【转】C++-ADO编程详解
c-各变量在内存中的位置
c-变态跳台阶
C++-编写类String的构造函数、析构函数和赋值函数
c-计蒜客 排序好的数组删除重复数字
c-归并排序

发布评论