分治算法----二分搜索

算法:BINARYSEARCHREC

伪代码如下:

输入:按非降序排列的n个元素的数组A[1...n]和元素x

输出:如果x=A[j],则输出j,否则输出0

binarysearch(1,n)

binarysearch(low,high)

if low>high then return 0

else

    mid ←(low+high)/2

    if x=A[mid] then return mid

    else if x<a[mid] then return binarysearch(low,mid-1)

    else return binarysearch(mid+1,high)

end if

时间复杂度为:Ο(logn)

详细代码如下:

int binary_search_recursion(const int array[], int low, int high, int key)

{

    int mid = low + (high - low)/2;

    if(low > high)

        return -1;

    else{

        if(array[mid] == key)

            return mid;

        else if(array[mid] > key)

            return binary_search_recursion(array, low, mid-1, key);

        else

            return binary_search_recursion(array, mid+1, high, key);

    }

}

参考:分治算法-二分查找 - 冯兴伟 - 博客园

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、 对以下一组数据进行降序排序(冒泡排序)。“24,80,35,8,9,54,76,45,5,63” int ...
    面条168阅读 3,895评论 0 3
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,162评论 0 10
  • 插入排序def inster_sort(lists): count = len(lists) for ...
    _Haimei阅读 2,571评论 0 1
  • 今日体验,立刻行动所带来的结果,确实是有非常大的提升,持续,不拖拉! 找核心,马上去做! 转身用,好的习惯,...
    王海博阅读 955评论 0 0
  • 有人说,读书人是幸福人。 因为她们同时拥有两个世界。 现实世界和书的世界。 你一个人的小世界~ 提起阅读,从离开学...
    粘人的小刺猬阅读 3,199评论 0 3