您的位置:首页 > 其它

二分查找

2015-06-27 14:21 363 查看
对排序序列进行查找,可以进行二分查找,时间复杂度为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  search