一个有序的字符串数组ar,如字典序,找到其中值等于字符串v的元素的序号,如果有多个满足条件,则返回序号最大的。
#include<iostream>
using namespace std;
int BinarySearch(char **ar,int begin,int end,char *v)
{
int result=-1;
while(begin <= end)
{
int mid=begin+(end-begin)/2;
if(strcmp(ar[mid],v) > 0)
end=mid-1;
else if(strcmp(ar[mid],v) < 0)
begin=mid+1;
else
{
if(result < mid)
result=mid;
begin=mid+1;
}
}
return result;
}
void main()
{
char *ar[7]={"ab","abb","abc","abc","abcd","abcde","abcdef"};
cout<<BinarySearch(ar,0,6,"abc")<<endl;
system("pause");
}