二分查找

来源:互联网 发布:怎么才能拥有淘宝水军 编辑:程序博客网 时间:2024/05/18 23:14

对排序序列进行查找,可以进行二分查找,时间复杂度为O(log(n)).
原理很简单,但是能正确无误的写出其代码,也并不容易。

主要需要注意的是:循环条件的判断和右端标记的下次迭代。
当left<=right; right=middle-1;
当left

int search(int array[], int n, int v){    int left, right, middle;    left = 0, **right = n - 1;**    while (**left <= right**)    {        middle = left + (right-left)/2;        if (array[middle] > v)        {            **right = middle - 1**;        }        else if (array[middle] < v)        {            left = middle + 1;        }        else        {            return middle;        }    }    return -1;}

版本二:

int search(int array[], int n, int v){    int left, right, middle;    left = 0, **right = n;**    while (**left < right**)    {        middle = left + (right-left)/2;        if (array[middle] > v)        {            **right = middle;**        }        else if (array[middle] < v)        {            left = middle + 1;        }        else        {            return middle;        }    }    return -1;}
0 0
原创粉丝点击