经典算法学习——二分查找

        在所有的查找算法中,二分查找是最简单一种。二分查找要求原先的序列是已经排序的,每次都是以序列中间的数字作为比较,如果小于中间的数字,那么就在序列左边继续递归查找;如果大于中间的数字,那么就在序列右边继续递归查找。直到找到该数字,或者直到序列中只有一个数字的时候都还没找到,则查找失败。查找的时间复杂度可以达到O(logN),应该说是除了数组按下标查找O(1)以外的最快的查找方式了。示例代码上传至 https://github.com/chenyufeng1991/BinarySearch 。

使用C语言完整实现如下:

// 实现二分查找
#include 
#include 

void BinarySearch(int *arr, int start, int end, int num);

int main(int argc, const char * argv[])
{
    int array[] = {4,5,6,7,8,9};

    BinarySearch(array, 0, 5, 99);

    return 0;
}

void BinarySearch(int *arr, int start, int end, int num)
{
    int mid = (start + end) / 2;
    if (arr[mid] == num)
    {
        printf("%d ",mid);
        return ;
    }

    if (start == end)
    {
        printf("没有找到");
        return ;
    }

    if (num < arr[mid])
    {
        BinarySearch(arr, start, mid, num);
    }

    if (num > arr[mid])
    {
        BinarySearch(arr, mid + 1, end, num);
    }

    return ;
}


你可能感兴趣的:(算法设计,经典算法学习)