int halfFind(int a[],int n,int num)//二分查找,返回重复的第一个
{
if(n<1) return -1;
int start=0,end=n-1;
int pos;
while(start<end)
{
pos=(start+end)/2;
if(a[pos]==num) end=pos;
else if(a[pos]<num) start=pos+1;
else end=pos-1;
}
if(a[start]==num) return start;
return -1;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10]={1,3,5,6,6,6,6,9,12,15};
int index=halfFind(a,10,6);
cout<<index<<endl;
return 0;
}
返回结果为3