码迷,mamicode.com
首页 > 编程语言 > 详细

算法学习笔记(一):二分法及其实现

时间:2015-01-23 21:23:08      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

基本思想:二分法的一个前提是序列已经是有序的,然后将待查找值与序列的中点比较。根据比较结果,选择下一步比较的部分。二分查找(binary search)就是一个不断重复这一查找过程,直到找到这个值。

算法复杂度:O(lgn)

算法实现:

一:迭代法

int bin_search_iteration(int arr[],int start,int end,int x)
{


    
    while (start<end)
    {
        int mid = (start + end) / 2;
        if (arr[mid]<x)
        {
            start = mid + 1;
        }
        else if (arr[mid]==x)
        {
            return mid;
        }
        else
        {
            end = mid - 1;
        }
    }
    if (start == end)
        return arr[start] == x ? start : -1;
    else
    {
        return -1;
    }


}

二:递归法

int  bin_search(int arr[],int start,int end,int x)
{
    if (start == end)
        return arr[start]==x?start:-1;
    
    int mid = (start+end) / 2;
    if(arr[mid]==x)
    {
        return mid;
    }
    else if(arr[mid]>x)
    {
        return bin_search(arr, start,mid, x);
    }
    else
    {
        return bin_search(arr, mid+1,end, x);
    }

    
}

 

算法学习笔记(一):二分法及其实现

标签:

原文地址:http://www.cnblogs.com/haoliuhust/p/binary_search.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!