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

二分查找算法

时间:2015-05-08 00:08:18      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:二分查找

问题:

    找出一个有序(字典序)字符串数组arr中值等于字符串v的元素的序号,如果有多个元素满足这个条件,则返回其中序号最大的。

 int  bisearch(char** arr, int b, int e, char* v)
{
//循环结束有两种情况:
//若minIndex为偶数则minIndex==maxIndex;
//否则就是minIndex==maxIndex-1;
while (minIndex<maxIndex-1)
{
midIndex = minIndex + (maxIndex - minIndex) / 2;//不使用(minIndex+maxIndex)/2是为了避免溢出
if (strcmp(arr[midIndex], v) <= 0)
minIndex = midIndex;
else
maxIndex = midIndex;//不需要midIndex-1,防止minIndex==maxIndex;
}
if (!strcmp(arr[maxIndex], v))//先判断序号 最大的值
return maxIndex;
else if (!strcmp(arr[minIndex], v))
return minIndex;
else
return -1;
}

二分查找算法

标签:二分查找

原文地址:http://blog.csdn.net/wangfengfan1/article/details/45567649

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